跳过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的答案更好。

循环继续,因为你永远不会改变ii = 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)"); } }