我使用以下代码段来获取系统时间。但它会导致分段错误。请帮忙。
printf("Time : %s\n", System("time"));
return 0;
请改用以下代码:
time_t t;
time(&t);
printf("%s", ctime(&t));
这将解决您的问题。
我假设你的意思是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.
system() 函数返回一个退出状态(一个 int),而不是一个字符串。调用system("time")
将时间打印到标准输出。如果这就是你想要的,只需使用
system("time");
你得到一个段错误,因为 int 0,当解释为 printf 的指针时%s
是一个 NULL 指针。取消引用 NULL 指针是未定义的行为,分段错误是这种未定义行为的一种可能性。
system ( ) 函数返回一个整数,while%s
表示您要打印一个字符串。系统函数返回的不是time
程序的结果,而是退出值。