2013-04-28 737 views
-2

我有一個奇怪的問題,與atoi(): 我有一個字符串(讓我們說str)這就像「aaaa 1111 \ 0」(我打印和檢查 - 它的確是它) 。 我試圖在str + 5上執行atoi,程序剛剛崩潰。我在前後添加了一行日誌,我可以看到前一行,但之後沒有任何記錄。所以問題出在這一行。 我也打印了str + 5,結果如預期的那樣,所以字符串也沒有錯。atoi()使程序崩潰

然後我嘗試創建一個大小爲5的char []數組,並複製了4個數字,並在末尾添加了null。 它仍然崩潰...

添加代碼:

int int_pin; 
char buff[MAX_LEN + PIN_LEN + 1]; //MAX_LEN = 5, PIN_LEN = 4 
//reading size of MAX_LEN + PIN_LEN from file to buff... 
buff[MAX_LEN + PIN_LEN] = '\0'; 
int_pin = atoi(buff+MAX_LEN); //crashes 

編輯:我也嘗試過的最簡單的代碼: char a[] = "1234"; int_pin = atoi(a);

它仍然崩潰。 你有什麼想法爲什麼一個簡單的atoi()調用使我的程序崩潰?

+4

*「代碼勝於雄辯」 *您需要發佈的代碼示例演示了問題,而不是描述字的問題。 – 2013-04-28 16:56:54

回答

1

您是否添加了#include <stdlib.h>以包含atoi函數?

我想這和它的作品:

#include <stdio.h> 
#include <stdlib.h> 
int main(void) { 
    char string[] = "aaaa 1111"; 
    int int_pin = atoi(string+5); 
    printf("%d", int_pin); /* returns 1111 as intended */ 
    return 0; 
} 
+0

仍然不能在這裏工作... – Augustina 2013-04-28 17:20:48

+0

你能發佈更多的代碼嗎?如果使用'-Wall'編譯,你會得到任何警告嗎? – 2013-04-28 17:22:35

+0

是 - 發佈更多的代碼,因爲您發佈的代碼按預期工作。 – 2013-04-28 17:31:43