2017-09-03 39 views
0

我寫接收的字符串作爲字符數組,並將其轉換爲int的函數:垃圾在循環無故

int makeNumFromString(char Str[]) 
{ 
    int num = 0, len = 0; 
    int p; 
    len = strlen(Str); 
    for (p = 0; p<len; p++) 
    { 
     num = num * 10 + (Str[p] - 48); 
    } 
    return num; 
} 

的問題是,無論串I輸入是多長,當「p」達到10,「num」的值變成垃圾! 我試圖debbuging和檢查較大的代碼之外的功能,但沒有成功。

什麼可能是問題,我該如何解決它? 謝謝

+0

你的問題需要一個語言標籤。請[編輯]並添加一個。 –

回答

0

也許你的int只能存儲32位,所以數字不能高於2,147,483,647。

嘗試使用類型爲num的存儲空間更大,如long

+0

謝謝你,我成功地解決了問題,通過限制num爲10位數字,否則打破;謝謝 – EricaN

+0

一個比我上面寫的更高的10位數字仍然不起作用。無論如何,如果答案解決了您的問題,請將其標記爲已解決。 –