0

我使用以下代码段来获取系统时间。但它会导致分段错误。请帮忙。

printf("Time : %s\n", System("time"));
return 0;
4

4 回答 4

3

请改用以下代码:

time_t t;
time(&t);
printf("%s", ctime(&t));

这将解决您的问题。

于 2012-05-15T13:45:18.880 回答
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.
于 2012-05-15T13:45:10.620 回答
2

system() 函数返回一个退出状态(一个 int),而不是一个字符串。调用system("time")将时间打印到标准输出。如果这就是你想要的,只需使用

 system("time");

你得到一个段错误,因为 int 0,当解释为 printf 的指针时%s是一个 NULL 指针。取消引用 NULL 指针是未定义的行为,分段错误是这种未定义行为的一种可能性。

于 2012-05-15T13:46:11.820 回答
1

system ( ) 函数返回一个整数,while%s表示您要打印一个字符串。系统函数返回的不是time程序的结果,而是退出值。

于 2012-05-15T13:45:13.797 回答