调用从标准输入读取的任何内容时,我一直遇到分段错误。我不知道为什么。getchar()
从某个函数中调用或任何其他类似函数会导致我的程序崩溃,但是当我从另一个函数调用它时,它工作正常。这是崩溃的部分:
int prompt()
{
int i;
int selection = -1;
while (selection < 0 || selection > 9) {
printf("Item:\n\n");
for (i = 0 ; i < 10 ; i++) {
printf("%d) %s\n", i, getItemName(i));
}
for (i = 0 ; i < 11 ; i++) {
printf("\n");
}
printf("Select the number of the corresponding item: ");
char input = getchar(); <--- dies here!
if (input != EOF && input != '\n') flush();
selection = atoi(input); <--- error here!
}
return selection;
}
void flush() {
char c = getchar();
while (c != EOF && c != '\n')
c = getchar();
}
更新经过大量的实验,我发现问题出在我标记的代码上。(atoi()
)。我是通过它一个简单的char
,而不是一个char*
。我仍然不明白为什么当我使用一堆时printfs
,它会死在我指定的行,而不是在调用atoi()
.