如何更新C中显示的时间?

时间:2012-02-25 09:16:45

标签: c time

我正在尝试显示时间,然后等待一段时间,然后显示更新的时间。然而,我的代码会打印相同的时间,而不会更新它。

到目前为止,这是我的代码:

#include<stdlib.h>
#include<time.h>
#include<sys/time.h>

int main(){
time_t timer;
time(&timer);
struct tm* time;
time = localtime(&timer);

printf("%s", asctime(time));
fflush(stdout);

sleep(4); //my attempt at adjusting the time by 4 seconds

time = localtime(&timer); // "refreshing" the time?
printf("%s", asctime(time));

return(0);

}

我的输出是:

ubuntu@ubuntu:~/Desktop$ ./tester
Sat Feb 25 08:09:01 2012
Sat Feb 25 08:09:01 2012

理想情况下,我会使用ctime(&amp; timer)而不是localtime(&amp; timer),但我现在只想将时间调整4秒。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

localtime只是将(指针)struct timep转换为struct tm,它不会检查它到底是什么时候。

如果您想要新的当前时间,请在睡眠后调用time(&timer),并且不要为本地变量提供与您在同一块中使用的库函数相同的名称

(你错过了两个标题 - <stdio.h>printf<unistd.h>sleep - 请确保在编译器上启用警告。)

答案 1 :(得分:0)

#include<stdlib.h>
#include<time.h>
#include<sys/time.h>
#include <stdio.h>

int main(){
                time_t timer;
                time(&timer);
                struct tm* time_real;//time is function you can't use as variable
                time_real = localtime(&timer);
                printf("%s", asctime(time_real));
                sleep(4);
                time(&timer);//update to new time
                time_real = localtime(&timer); // convert seconds to time structure tm
                printf("%s", asctime(time_real));

return(0);
}