將/proc/uptime檔案中的數轉化成long然後轉成日期
阿新 • • 發佈:2019-01-22
思路:
1、格式化讀取檔案中兩個數,儲存在兩個字串中。
2、/proc/uptime中表示秒,捨棄小數。將整數部分轉為long。
3、由long轉日期。
#include <stdio.h>
int main()
{
FILE *fp = NULL;
fp = fopen("uptime.c", "r");
if(fp == NULL)
{
printf("open file failed!\n");
return 0;
}
// 分別儲存兩個數,長度要比檔案中數略大
// 可以使用cat /proc/uptime提前檢視一下
char t[20];
char u[20];
fscanf(fp, "%s %s", t, u);
// 統計第一個數的整數位個數,並且轉成long,省略第2個數處理
unsigned long dt = 0;
int i;
for(i=0; i<20; i++)
{
if(t[i] == '.')
break;
}
int j = 1;
for(i--; i>=0; i--)
{
dt += (t[i]-'0') * j;
j *= 10 ;
}
// long轉date 並輸出
unsigned long day, hour, minute, second;
day = dt / (60*60*24);
dt = dt % (60*60*24);
hour = dt / (60*60);
dt = dt % (60*60);
minute = dt / 60;
second = dt % 60;
printf("%ld:%ld:%ld:%ld\n", day, hour, minute, second);
fclose(fp);
return 0;
}