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