2013-05-06 38 views
0

我需要創建一個結構在哪裏設置日期。我用Google搜索一些東西,我發現從庫time.htm structure,但我有一些麻煩; 我需要打印的日誌文件上的一些日期,在這裏一個例子: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 2013-05-06 16:16:38

+0

你的代碼對我來說看起來沒問題。它做錯了什麼? – 2013-05-06 16:22:53

+1

'typedef結構TM * TM_;' - 隱藏指針類型的typedef一般的背後是一個壞主意。刪除該類型定義,只是聲明'結構TM *秒;' – 2013-05-06 17:29:25

回答

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

你似乎缺少與'「PC數量%d」'位相匹配的參數... – twalberg 2013-05-06 16:39:19

+0

謝謝你的提示:) – 2013-05-06 16:41:43

+1

不要多次調用'time(NULL)'。只需調用一次並將值存儲在't'中,然後使用't'。除了效率低下之外,你可能會在調用'time()'之前讓時鐘前進。 – 2013-05-06 17:30:45

0

的strftime()可以幫助你在你最喜歡的格式打印日期和時間。請看看男人strftime。