当前位置:  开发笔记 > 编程语言 > 正文

C中的时间函数始终显示"Wed Dec 31 23:59:59 1969"

如何解决《C中的时间函数始终显示"WedDec3123:59:591969"》经验,为你挑选了1个好方法。

我需要为我的应用程序记录当前日期和时间.我用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循环中更新时间



1> Jorge Israel..:

您返回错误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不变值.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有