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