我目前有一個函數,它以char數組的形式接受用戶輸入。我試圖通過下面使用的函數解析輸入,以及爲所使用的指針分配內存。然而,我期望從用戶那裏得到的輸入是兩個字符「ab」,後面跟着一個整數。當我嘗試將其轉換爲整數時,程序繼續執行seg故障。我試着分配更多的內存,改變數組的大小,任何幫助將不勝感激!字符串函數返回seg錯誤
int input(char input[10])
{
int val;
char *firstW,*secondW;
firstW = malloc(sizeof(10));
secondW = malloc(sizeof(10));
firstW = strtok(input," ");
firstW = strstr(input,"ab");
secondW = strtok(NULL, " ");
val = atoi(secondW);
//When atoi is called, secondW contains any integer for instace "10", but of course as a string type
//trying to convert string to integer, but returns seg fault
secondW聲明在哪裏?你打電話給atoi時有什麼? – 2015-02-10 01:08:23
你從不檢查'secondW!= NULL'。 – 2015-02-10 01:13:50
如果'input'源自字符串文字,那可能是問題---'strtok'修改'input'(並且修改字符串文字是未定義的行爲)。在附註中,'firstW'和'secondW'的'malloc'是多餘的---'strtok'返回一個指向(修改)'input'的指針。 – 2015-02-10 01:15:25