避免无限循环

时间:2018-06-06 12:32:31

标签: c while-loop user-input infinite-loop

我坚持做一个循环练习。只要我只输入整数,该程序似乎工作正常。但是,如果我输入一个字符,一个带有小数的符号或实数(甚至是整数,如1.0),我会得到一个无限循环。

int main() 
{
    int num;
    printf("Enter an odd number 1 and 10.");
    while(1) 
       {
        printf("\n\nEnter : ");
        scanf("%d", &num);

        if(num == 0)
            break;
        else if(num < 0 || num > 10)
            printf("You entered number is beyond the range.");
        else if(num % 2 == 0)
            printf("You entered an even number.");
        else
            printf("You entered a correct number.");
       }

   printf("You are exiting the program.");      
   return 0;
} 

1 个答案:

答案 0 :(得分:0)

但是,如果我输入一个字符,一个符号或一个带小数的实数?那么你有未定义的行为,因为scanf()期待{{1} }参数但你提供的不是int参数。

甚至是整数,例如int不,1.0不是1.0它是真实数字。

检查integer的返回值,以了解它是成功还是失败。打开scanf()并进行分析。例如

man 3 scanf

int ret = 0;

ret = scanf("%d",&num);