-1
我有一個C程序需要讀取兩行用戶輸入。第一行是3個數字,空格分隔,第二行是單個數字。事情是這樣的:讀取用戶輸入的單獨行c
2 5 7
6
這裏是我的代碼:
int main(int argc, char** argv){
int a, b, c, d;
char line[256];
while(fgets(line, sizeof(line), stdin)){
a = atoi(strtok(line, " "));
b = atoi(strtok(NULL, " "));
c = atoi(strtok(NULL, " "));
}
scanf("%d", &d);
printf("a : %d b: %d c: %d d: %d",a, b, c, d);
}
這項計劃最終給我一個Segmentation Fault 11
你有沒有用它調試器?例如'valgrind'會打印出發生錯誤內存操作的地方。無論你的輸入數據分成多行(假設第一行有2個數字),你仍然試圖從這行中得到3個值,因爲你從不檢查什麼是strtok返回的(如果它返回NULL,atoi會顯示段錯誤,顯然... )。 – hexasoft
'scanf(「%d%d%d%d」,&a,&b,&c,&d);'而不是。 – BLUEPIXY
@BLUEPIXY,答案不應在評論中。 – pgreen2