C程序以小时,分钟和秒打印正常运行时间。

时间:2012-03-14 18:21:51

标签: c linux

我让这个程序以小时,分钟和秒打印时间

#include<stdio.h>

int main()

{

float a, b,x,mina,minb,hrsa,hrsb;
float seca,secb;
FILE *fp = fopen("/proc/uptime", "r");
fscanf(fp, "%f %f", &a, &b);

seca=(a)%60;
mina=seca/60;
hrsa=mina/60;

secb=(b)%60;
minb=secb/60;
hrsb=minb/60;

printf("Uptime=%f hrs %f min %f sec",hrsa,mina,seca);

printf("Idealtime =%f hrs %f min %f sec",hrsb,minb,secb);

return 0;
}

这里我在第12行和第16行收到错误“二进制无效操作数”。

4 个答案:

答案 0 :(得分:2)

你不能在浮点数上做mod(%)。试试((long)a)%60; 甚至(long long),但1&lt; <31秒提供的68年应该足够了....

此外,您需要在几分钟内进行另一次修改操作,否则3601秒将变为“1小时60分钟,1秒”,而不是“1小时0分钟,1秒”。

答案 1 :(得分:2)

你不能取浮点数的模数(5.5 / 3的余数是多少?没有意义)。

顺便说一句,/proc/uptime返回的值已经是秒,所以seca应该是

seca=(long)(a);

答案 2 :(得分:0)

abfloat,它们应为int

答案 3 :(得分:0)

除非您必须手动执行此操作,否则请查看标准时间函数。

  

man time.h

对于你的代码(正如其他人所说)你不能真正对浮点数进行整数除法和整数mod运算(没有任何意义)。