我要求为我的申请记录当前日期和时间。
我已经用C语言写了代码。我已经附上了代码

#include <stdio.h>
#include <time.h>

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返回错误,请参阅docs
出现错误时,将返回((time_t) -1),并正确设置errno。
当然,相对于纪元时间的-1是正在打印的日期。但是,您没有存储或使用time的返回值,因此这意味着t本身在某种程度上是-1。你在发布你正在使用的代码吗?
因此,由于time返回-1表示您有错误,因此必须检查errno以查看实际错误是什么。但是,显然time应该返回的唯一错误是EFAULT,这在本文中意味着:
t指向可访问地址空间之外。
更新:尝试执行此操作以查看发生了什么:

time_t t = time(NULL);

没有什么理由像你那样做。
如果这确实是您逐字使用的代码,那么我无法解释如何在t中获得-1,因为-1将由time()返回,但您不会以任何方式访问返回值。这意味着t必须已经是-1。考虑到它是未初始化的,我想这是可能的,但是我不确定在每个程序运行时t的未初始化内存是否总是-1。有人知道吗?不过,它还需要&t是一个无效地址,以便触发EFAULT,这将使t的-1值保持不变。

07-24 09:39
查看更多