跳过C中的Scanf语句
我正在为刽子手写一个客观的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
退出循环。
while (i == 0)
只要i
保持在0
值就会循环。 我没有看到i
的代码中的任何地方都被修改过,所以可能存在错误。
编辑:Alter Mann的答案更好。
循环继续,因为你永远不会改变i
而i = 0
是altways true; continue
使代码跳转到循环condicion,没有结束循环。 另外,正如@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)"); } }