【发布时间】:2021-12-28 18:19:11
【问题描述】:
我的C代码如下
int main() {
int userInput = 0;
while (userInput != 4) {
printf("Enter a number : ");
scanf("%d", &userInput);
};
return 0;
}
这通常在输入整数值时起作用。但是当输入 一个字符串值 时,它不会再次询问输入。它进入一个无限循环,打印“输入数字”短语。然后,我尝试了如下代码。
int main() {
int userInput = 0;
while (userInput != 4) {
userInput = 0; // reset the userInput value
printf("Enter a number : ");
scanf("%d", &userInput);
};
return 0;
}
即使这样也没有解决我的问题。为什么会这样?怎么解决?
【问题讨论】:
-
你应该检查
scanf的返回值是否成功。如果输入与格式字符串不匹配,它会保留在流中,并且会被一遍又一遍地读取(并失败)。 -
您的
%d格式只查找整数。如果它看到一个非整数字符,它将停止。所以它只是一遍又一遍地看着同一个角色。你最好先读一整行,然后再看你读到的内容。 -
这能回答你的问题吗? Entering a character instead of integer
-
trueThari,请注意,您输入的不是字符串,而是文本行,可能带有终止符
'\n'。 C 中的 string 是带有终止 null 字符 的字符数组。
标签: c while-loop integer scanf