[英]Skipping over Scanf statement in C
我正在为刽子手编写一个客观的 c 程序。 我需要复制另一个给我的程序。 我已经完成了大部分工作,但遇到了一个问题。 它必须完全复制另一个程序,所以我进入另一个程序并在字长中输入一个字符。 它想出了“数字必须在 3 到 14(含)之间”语句,并要求我再次输入一个数字,但它开始无限循环。 当我输入一个小于 3 且大于 14 的数字(出现错误并要求另一个输入)但用一个字母无限循环时,它会起作用。 有任何想法吗??? 谢谢
while (i == 0){
printf("\n\n > Please enter a word length: ");
scanf("%i", &wordLength);
printf("\n\n");
if (number > 3 && number < 14) {
continue;
}
else printf("number must be between 3 and 14 (inclusive)");
}
您正在检查number
但似乎必须检查wordLength
变量,并且(如@Narkha 所指出的)使用break
而不是continue
退出循环。
只要i
保持在值0
while (i == 0)
就会循环。 我没有看到i
在你的代码中的任何地方被修改,所以可能有一个错误。
编辑:Alter Mann 的回答更好。
循环继续,因为您永远不会改变i
并且i = 0
始终为真; continue
使代码跳转到循环条件,没有结束循环。 另外,正如@AlterMann 评论的那样,您没有检查 wordLength,我建议这样做
bool continueLoop = true;
while (continueLoop ){
printf("\n\n > Please enter a word length: ");
scanf("%i", &wordLength);
printf("\n\n");
if (wordLength > 3 && wordLength < 14) {
continueLoop = false;
}
else {
printf("number must be between 3 and 14 (inclusive)");
}
}
或者可能使用break
并结束循环而不带标志
while (true){
printf("\n\n > Please enter a word length: ");
scanf("%i", &wordLength);
printf("\n\n");
if (wordLength > 3 && wordLength < 14) {
break;
}
else {
printf("number must be between 3 and 14 (inclusive)");
}
}
在 scanf() 之后使用 getchar() 以避免在标准输入中留下换行符。
while (i == 0){
printf("\n\n > Please enter a word length: ");
scanf("%d", &wordLength);
getchar();
printf("\n\n");
if (number > 3 && number < 14) {
break;
}
else printf("number must be between 3 and 14 (inclusive)");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.