2012-11-07 90 views
1

有沒有什麼可以提供給atoi函數的,它會產生一個錯誤(可能會或可能不會使程序崩潰)?C atoi函數的錯誤可能性

編輯:一個錯誤被定義爲任何會產生編譯錯誤,或會導致程序在執行過程中終止的東西。

+0

'的atoi(NULL)'有段錯誤的一個很好的機會,通過它例如'double'會導致編譯失敗。 –

回答

3

任何會產生編譯錯誤

如果你提供給atoi()的說法是不兼容的類型,你會得到一個編譯時錯誤。

的東西,會導致如果用無效的指針const char*供應atoi()程序執行

時終止,你的代碼的行爲將是不確定的。雖然沒有保證,如果指針是NULL或指向不可讀的內存程序可能會終止(這取決於操作系統和硬件體系結構)。

+0

我會編輯問題。 –

1

我懷疑這個問題更多的是'我必須在將信息傳遞給atoi之前從源頭處理輸入信息來清理輸入嗎?'

對於大多數情況,指定正確書寫的atoi函數的行爲。它會將字符轉換爲數字,直到它遇到非數字的東西然後停止。然而atoi被認爲容易溢出

你應該使用strtol代替;它的規格是嚴格的

當然在你的C運行時的執行可能被打破 - 但是沒有很多你可以做的