C 程序以小时、分钟和秒为单位打印正常运行时间。

标签 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 行收到错误“二进制操作数无效”。

最佳答案

你不能对 float 做 mod (%)。尝试((long)a)%60; 甚至(long long),但是1<<31秒提供的68年应该足够了.. ..

此外,您还需要对分钟进行另一个模运算,否则 3601 秒将变为“1 小时 60 分 1 秒”,而不是“1 小时 0 分 1 秒”。

关于C 程序以小时、分钟和秒为单位打印正常运行时间。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9707806/

相关文章:

c - 为什么需要为 GCC 中的代码覆盖传递两个编译器标志

c++ - 改进稀疏线性系统的解决方案

linux - 使用 tc 进行流量整形

c - 错误: ISO C forbids nested functions - What's wrong?

c++ - Antlr C 运行时示例中的 undefined reference

python - 有没有办法在 Makefile 中自动生成依赖树?

c - 在 C 中使用 scanf 匹配常规字符

c - mount() 上的自动检测文件系统

c - linux终端: Changing images: printing over already printed text游戏

c++ - 在哪里可以找到 arm-linux-gnueabihf-ld 的联机帮助页,更不用说编写良好的联机帮助页了,其中包括 -rpath 和 -rpath-link?