Как мне обновить время, отображаемое в C? - PullRequest
1 голос
/ 25 февраля 2012

Я пытаюсь отобразить время, затем подождать некоторое время, а затем отобразить обновленное время. Однако мой код печатается в то же время, без обновления.

пока это мой код:

#include<stdlib.h>
#include<time.h>
#include<sys/time.h>

int main(){
time_t timer;
time(&timer);
struct tm* time;
time = localtime(&timer);

printf("%s", asctime(time));
fflush(stdout);

sleep(4); //my attempt at adjusting the time by 4 seconds

time = localtime(&timer); // "refreshing" the time?
printf("%s", asctime(time));

return(0);

}

и мой вывод:

ubuntu@ubuntu:~/Desktop$ ./tester
Sat Feb 25 08:09:01 2012
Sat Feb 25 08:09:01 2012

в идеале, я бы использовал ctime (& timer) вместо localtime (& timer), но сейчас я просто пытаюсь настроить время на 4 секунды. Любая помощь будет оценена.

Ответы [ 2 ]

4 голосов
/ 25 февраля 2012

localtime просто преобразует (указатель) struct timep в struct tm, он не проверяет, сколько времени вообще.

Просто позвоните time(&timer) после сна, если выхотите новое текущее время, и не присваивайте локальной переменной то же имя, что и библиотечной функции, которую вы используете в том же блоке .

(И вам не хватает двух заголовков- <stdio.h> для printf и <unistd.h> для sleep - убедитесь, что вы включили предупреждения на вашем компиляторе.)

0 голосов
/ 06 марта 2014
#include<stdlib.h>
#include<time.h>
#include<sys/time.h>
#include <stdio.h>

int main(){
                time_t timer;
                time(&timer);
                struct tm* time_real;//time is function you can't use as variable
                time_real = localtime(&timer);
                printf("%s", asctime(time_real));
                sleep(4);
                time(&timer);//update to new time
                time_real = localtime(&timer); // convert seconds to time structure tm
                printf("%s", asctime(time_real));

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