我使用以下代码段来获取系统时间。但它会导致分段错误。请帮忙。
printf("Time : %s\n", System("time"));
return 0;
答案 0 :(得分:3)
请改用以下代码:
time_t t;
time(&t);
printf("%s", ctime(&t));
这将解决您的问题。
答案 1 :(得分:2)
我认为您的意思是system()
而不是System()
。
您似乎期望system()
将返回包含命令打印到终端的任何内容的字符串。它没有这样做。实际上,system()
返回子进程的退出代码。
获取当前时间的最简单方法是使用time()
函数:
NAME
time - get time in seconds
SYNOPSIS
#include <time.h>
time_t time(time_t *t);
DESCRIPTION
time() returns the time since the Epoch (00:00:00 UTC, January 1,
1970), measured in seconds.
If t is non-NULL, the return value is also stored in the memory pointed
to by t.
答案 2 :(得分:2)
system()函数返回退出状态(int),而不是字符串。调用system("time")
将时间打印到stdout。如果这是你想要的,只需使用
system("time");
你得到一个段错误,因为当被解释为printf的%s
的指针时,int 0是一个NULL指针。解除引用NULL指针是未定义的行为,并且分段错误是这种未定义行为的一种可能性。
答案 3 :(得分:1)
system() function返回一个整数,而%s
表示您要打印字符串。系统函数不返回time
程序的结果,而是返回退出值。