простая программа c не выдает требуемый вывод - PullRequest
6 голосов
/ 13 марта 2011

Я использую следующую программу для печати текущего времени

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

Работает только в первый раз. Если я запускаю его через какое-то время, оно снова дает то же самое старое время.

Зачем мне нужно обновлять время?

Ответы [ 3 ]

14 голосов
/ 13 марта 2011

__TIME__ - это стандартный предопределенный макрос , который расширяется до строковой константы, описывающей время, в которое препроцессор запускается .

Он заменяется препроцессором непосредственно перед компиляцией. Так что не меняется при разных пробегах. Но если вы перекомпилируете свою программу, вы увидите изменения.

Чтобы узнать текущее время дня, вы можете использовать функции time, localtime и asctime:

time_t rawtime;
struct tm * timeinfo;

time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "Current local time and date: %s", asctime (timeinfo) );
9 голосов
/ 13 марта 2011

__TIME__ - это макрос, устанавливаемый вашим компилятором. Поскольку это исправлено во время компиляции, запуск вашей программы позже не изменит вывод. Вы можете вызвать gettimeofday() или time() или даже некоторые другие функции, чтобы получить время / дату во время выполнения. ctime() и связанные с ним функции могут генерировать для вас более полезные строки.

0 голосов
/ 13 марта 2011

То, что все говорят о __TIME__, верно.Вот ссылка на библиотеку ctime.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...