2012-11-08 77 views
1

下面的代碼應該可以工作(這是stackoveflow中的一個可接受的答案),但不知何故,我得到兩個警告,結果我得到了分段錯誤。怎麼了?時間處理期間的警告和運行時錯誤

time_t timer; 
char buffer[25]; 
struct tm* tm_info; 

time(&timer); 
tm_info = localtime(&timer); 

strftime(buffer, 25, "%Y:%m:%d%H:%M:%S", tm_info); 

bead.c:61:警告:賦值時指針從整數沒有投 bead.c:63:警告:內建函數不兼容的隱式聲明âstrftimeâ

line 61 is tm_info = localtime(&timer); 
and line 63 is strftime(buffer, 25, "%Y:%m:%d%H:%M:%S", tm_info); 
+0

哪個編譯器?您的示例與文檔中的示例幾乎相同:http://www.cplusplus.com/reference/clibrary/ctime/strftime/ – Benj

回答

2

所以...編譯器認爲localtime返回一個整數並且strftime不存在?

您確定您需要包括<time.h>

+0

什麼是業餘錯誤!謝謝 –

+0

在我的情況下,我包含sys/time.h而不是time.h ...獲取該警告和段錯誤... –

0

我我已經在「gcc version 4.4.3(Ubuntu 4.4.3-4ubuntu5)」中測試過它,一切正常!

謝謝!

0

如果我不包括time.h,這段代碼段錯誤,如果我這樣做不段錯誤。

沒有time.h,你的編譯器不知道函數的簽名,並假定它是一個函數返回一個int(如果我的記憶很好)。

長話短說,包括time.h