我需要为我的应用程序记录当前日期和时间.我用C编写了代码.我附上了代码
#include#include int main() { time_t t; while(1) { time(&t); printf("Today's date and time : %s",ctime(&t)); } }
输出是
Today's date and time : Wed Dec 31 23:59:59 1969 Today's date and time : Wed Dec 31 23:59:59 1969 Today's date and time : Wed Dec 31 23:59:59 1969 Today's date and time : Wed Dec 31 23:59:59 1969
自UNIX时间开始以来,时间没有得到更新.我在另一台计算机上运行相同的程序,运行得很好.为什么我的计算机出现此错误?如何解决?
谢谢
任何帮助赞赏.
编辑:代码中有一个错误,我纠正了它,以便在while循环中更新时间
您返回错误time
,请参阅文档:
出错,
((time_t) -1)
返回,并正确设置errno.
当然,相对于EPOCH时间的-1是正在打印的日期.但是,你没有存储或使用返回值time
,所以这意味着它t
本身就是-1.您是否正在发布您正在使用的确切代码?
因此,time
返回-1表示您有错误,您必须检查errno
实际错误是什么.但是,显然唯一time
应该返回的错误是EFAULT
,在这种情况下意味着:
t
您可访问的地址空间之外的点.
更新:尝试这样做,看看会发生什么:
time_t t = time(NULL);
没有太多理由按照你的方式去做.
如果那是你逐字使用的代码,那么我无法解释你是如何得到-1的t
,因为-1会被返回,time()
但你没有以任何方式访问返回值.这意味着t
必须已经-1.鉴于它是未初始化的,我认为这是可能的,但我不确定t
在每个程序运行时,未初始化的内存是否总是-1.有人知道吗?不过,这将也需要&t
以某种方式无效的地址为它触发EFAULT
,这将留下t
的-1不变值.