简单的c程序不会产生所需的输出

时间:2011-03-13 05:28:05

标签: c time

我使用以下程序打印当前时间

int main() 
{
  printf("%s",__TIME__);
  return 0;
}

它仅适用于第一次。如果我在一段时间后运行它再次给出相同的旧时间。

为什么我需要更新时间?

3 个答案:

答案 0 :(得分:14)

__TIME__是一个standard predefined macro,它扩展为一个字符串常量,用于描述运行预处理器的时间

它在编译之前被预处理器替换。所以不会随着不同的运行而改变。但如果你重新编译你的程序,你会看到变化。

要获取当天的当前时间,您可以使用timelocaltimeasctime函数:

time_t rawtime;
struct tm * timeinfo;

time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "Current local time and date: %s", asctime (timeinfo) );

答案 1 :(得分:9)

__TIME__是由编译器设置的宏。由于它是在编译时修复的,因此稍后运行程序不会更改输出。您可以调用gettimeofday()time()或甚至其他一些函数来获取运行时的时间/日期。 ctime()及其相关函数可以为您生成更多有用的字符串。

答案 2 :(得分:0)

每个人对__TIME__的看法都是正确的。这是关于ctime库的链接。

http://www.cplusplus.com/reference/clibrary/ctime/ctime/