2014-02-07 37 views
4

我解析字符串(一個char *)的計數使用,我使用的sscanf從字符串的數字解析成雙打,就像這樣:格式說明%N,而與sscanf的沒有返回字符

while(*s){ 
    if(sscanf(s, " %1[MmLl] %f %f %n ", command, &x, &y, &n) == 3){ 
     //Do some processing 
     s += n; 
    } 
} 

這適用於除少數情況外的大多數輸入。問題在於count變量n。對於某些輸入,變量n從不更新,並且它繼續保持先前迭代的計數。這會導致錯誤的偏移量並導致解析錯誤。 我沒有看到任何奇怪的輸入失敗。

注意:此問題僅在Windows中發生,因爲相同的代碼會在linux中產生正確的輸出。

有沒有人遇到類似的問題?

+2

擺脫'%n'前後的空格。 – ooga

+0

謝謝。刪除%n前後的空格。 – Mugunth

+1

爲什麼解決問題的解釋?這對我來說並不是顯而易見的。 –

回答

2

擺脫%n之前和之後的空格。