0
一個以輸入預期我試圖運行的代碼輸入看起來是這樣的:從標準輸入分段故障
(I,J),其中i和j是整數。 (例如(1,2),(10,21)等)。
我需要在int變量中存儲這兩個整數。
這是我做過什麼:
getchar(); // gets open parenthesis
// gets first num
char *first;
int z = 0;
int a;
while((a = getchar()) != ',') {
first[z] = a;
z++;
}
int firstNum;
sscanf(first, "%d", &firstNum);
printf("%d\n", firstNum); //checking if got correct num
// gets second num
char *second;
int y = 0;
int b;
while((b = getchar()) != ')') {
second[y] = b;
y++;
}
int secondNum;
sscanf(second, "%d", &secondNum);
printf("%d\n", secondNum); //checking if got correct num
它的工作原理來獲得的第一個數字。但是,當我爲第二個數字完成時,我遇到了分段錯誤,我找不到原因?我基本上只是重新獲得第一個數字的過程?
謝謝!
'第一個'只是一個指針,它沒有任何內存=>使用malloc或原始數組 – Garf365
我將其更改爲一個大小爲100的數組,它可以工作。謝謝! – Katrina
此外,當您敲入回車鍵時寫入stdin的換行符可能會導致隨後調用'sscanf'時出現問題。在你的格式字符串的第一部分中包含空格以消耗'\ n':'sscanf(first,「%d」,&firstNum);' – ryyker