我正在使用stdlib.h
头文件和time.h
标头处理C中的计时器。我遇到了一个错误。如果你能帮助我,我会很高兴的。我的代码是:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int s;
int m = 0;
while (s<=60)
{
system("clear");
printf("%d Minutes %d Seconds", m, s);
sleep(1000);
s+=1;
if (s==60)
{
m+=1;
s=0;
}
}
return 0;
}
程序没有显示任何输出而不是显示空白屏幕。
答案 0 :(得分:2)
因为stdout的输出是line-buffered
,所以如果你需要它更新一行内的输出(在打印\n
之前),你需要用fflush()
刷新缓冲区
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int s = 0; // init it
int m = 0;
while (s <= 60)
{
system("clear");
printf("\r"); // move cursor to position 0
printf("%d Minutes %d Seconds", m, s);
fflush(stdout); // flush the output of stdout
sleep(1); // in seconds
s += 1;
if (s==60)
{
m+=1;
s=0;
}
}
return 0;
}
答案 1 :(得分:1)
sleep(1000)
将睡眠1000秒。您必须将s
初始化为零,因为您在while
循环中读取它。 {em> unistd.h 中定义了sleep
,因此您也应该包含它。