跳过C中的Scanf语句

时间:2014-03-26 09:11:33

标签: 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)");
            }

4 个答案:

答案 0 :(得分:2)

您正在检查number但似乎必须检查wordLength变量,并且(正如@Narkha所指出的那样)使用break代替continue退出循环

答案 1 :(得分:1)

只要while (i == 0)保持在值i

0就会循环播放。我没有在代码中的任何地方看到i被修改,因此可能存在错误。

编辑:Alter Mann的答案更好。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在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)");
            }