我正在尝试显示时间,然后等待一段时间,然后显示更新的时间。然而,我的代码会打印相同的时间,而不会更新它。
到目前为止,这是我的代码:
#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秒。任何帮助将不胜感激。
答案 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);
}