2013-05-06 3 views
0

Мне нужно создать структуру, где установлена ​​дата. Я что-то googled, и я нашел tm structure из библиотеки time.h, но у меня возникли проблемы; мне нужно напечатать некоторые даты в лог-файл, вот пример:Как работают tm-структуры (от time.h)?

typedef struct tm* tm_; 

...

void NEW_Job() 
{ 
    time_t t; 
    tm_ secs; 
    t=time(NULL); 
    secs=localtime(&t); 
    add_QUEUEnode(generate_job()); 
    fprintf(f, "\n%d:%d.%d : New job created.", secs->tm_hour, secs->tm_min, secs->tm_sec); 
} 

Я действительно не знаю, где я не прав.

Заранее спасибо за помощь :)

+0

Один из моих ответов охватывает использование этой структуры http://stackoverflow.com/questions/16164442/convert-seconds-from-jan-1st-1970-to-date-using-c-language/16166125#16166125 – Dariusz

+0

Ваш код выглядит хорошо для меня. Что он делает неправильно? –

+1

'typedef struct tm * tm_;' - Скрывать типы указателей за typedefs, как правило, плохая идея. Отбросьте typedef и просто объявите 'struct tm * secs;' –

ответ

0

Точная ошибка не была там, но в другой строке кода, именно здесь:

void PCunload(int b) 
{ 
    time_t t; 
    tm_ secs; 
    int hh, mm, ss; 
    hh=(time(NULL)-n[b].start_time)/3600; 
    mm=((time(NULL)-n[b].start_time)%3600)/60; 
    ss=((time(NULL)-n[b].start_time)%3600)%60; 
    t=time(NULL); 
    secs=localtime(&t); 
    n[b].job.priority=-1; 
    -->>fprintf(f, "\n%d:%d.%d : PC number %d unloaded; elapsed time: %d:%d.%d", secs->tm_hour, secs->tm_min, secs->tm_sec, hh, mm, ss); 
} 

Там я пытался сделать преобразование внутри функции printf, но что-то не так ... Приношу свои извинения!

+2

Вам кажется, что отсутствует аргумент, соответствующий совпадению с номером «ПК номер% d» '... – twalberg

+0

спасибо за подсказку :) –

+1

Do not вызовите 'time (NULL)' несколько раз. Просто вызовите его один раз и сохраните значение в 't', затем используйте' t'. Помимо неэффективности, вы рискуете, чтобы часы были направлены между вызовами 'time()'. –

0

strftime() может помочь вам печатать дату и время в вашем любимом формате. Пожалуйста, взгляните на man strftime.

 Смежные вопросы

  • Нет связанных вопросов^_^