scanf

在循环中使用scanf的注意事项:

如果输入的格式不正确,则在后面的循环中会跳过scanf(),从而变成死循环,或者无法得到想要的结果;

#include <stdio.h>

int main()
{
        unsigned int year;
        char flag = 0, m;
        printf("请输入要判断的年份: ");
        while(!flag)
        {
                flag = scanf("%u", &year);if(!flag)
                        printf("您输入的格式不正确,请重新输入:");
        }return 0;
}

执行后,输入 a 

则会进入死循环

分析:若不按照scanf()中的格式类型输入,则scanf 不会读取缓存中的输入,而该输入的字符值在缓存中不会丢失,程序运行过程中都会存在,每次运行scanf 语句时无法进行赋值并跳过,所以会出现跳过scanf()的假象,不给使用者输入的机会。

解决方法:使用getchar()函数将输入缓存中的垃圾值(输入错误的值)取掉,即可解决这一问题。

posted @ 2020-08-15 15:42  阿拉灯神丁0  阅读(434)  评论(0)    收藏  举报