2012-08-22 79 views
2

我有閱讀的日期格式(DD-MM-YYYY)使用sscanf的這一行代碼從一個char *字符串:閱讀最新與sscanf的

sscanf(string, "%[^-]-%[^-]-%[^;];", day, month, year) 

其中日/月/年份是char *每個3/3/5個元素的字符串。

這樣它的工作原理,但是當我嘗試使用天/蛾/年爲integer變量(與相同sscanf),我得到了一個0 0 0值時,我對他們的使用printf。如果我改變sscanf

​​

segmentation fault

任何人都可以幫到我嗎?使用K & R書,我沒有找到解決方案。

+0

如何是'天','月'和'年'宣佈? – cnicutar

回答

7

您需要通過int變量的地址:

int day, month, year; 
sscanf(string, "%d-%d-%d;", &day, &month, &year); 

sscanf()返回的轉讓的數量,推薦使用daymonthyear之前檢查返回值:

if (3 == sscanf(string, "%d-%d-%d;", &day, &month, &year)) 
{ 
} 
+0

這是正確的,但我發誓我嘗試了&天...之前,但沒有工作.-。 –

+0

@ArrigoPierotti,你是否將'day'的類型從'char [3]'改爲'int'? – hmjd

+0

日/月/年更改爲整數,但沒有奏效。現在它運作,不知道xD –