时间功能在c中不起作用

时间:2012-05-15 13:43:22

标签: c datetime

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

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

4 个答案:

答案 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程序的结果,而是返回退出值。