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()函数将输入缓存中的垃圾值(输入错误的值)取掉,即可解决这一问题。

浙公网安备 33010602011771号