这个函数只是停留在一个循环中,而我的用户没有输入正确的输入(在这种情况下是一个整数)。无限循环发生时,用户输入错误的值(如字符串)。但为什么会发生这种情况?如何修复?
int main(void) {
int colQty;
int result = 0;
while (result != 1) {
printf("Informe a quantidade de colunas: ");
result = scanf("%d", &colQty);
if (result != 1) {
printf("Erro! Verifique se os valores de entrada estão certos.");
}
}
return 0;
}
字符串
2条答案
按热度按时间zdwk9cvp1#
scanf
在错误的输入上停止,并不跳过它。您的代码将再次扫描相同的输入。通常,最好读取行,sscanf
读取字符串。字符串
lndjwyie2#
正如 @gulpr 回答的那样,
scanf()
将违规输入留在了输入流中,因此下一次迭代将继续失败。同样的问题也会发生在文件末尾,例如,如果输入流从空文件重定向。建议一次读取一行输入,并使用
sscanf
从该行解析用户输入。以下是修改后的版本:
字符串