C语言scanf读取错误数据和缓冲清除

时间:2024-04-10 17:34:17

对于以下程序:

do{
                 k=scanf("%lf",&grade);
                 printf("输入结果 k %d\n",k);
             }while( k!=1 || grade < 0 || grade > 100 ); 

如果输入的数据不是0到100,会再次执行scanf,接收数据。

如果输入逗号或者字母,k的值为0,但是会一直循环下去,不会停止。

解决办法是:在scanf后,做清除缓存的操作。

C语言scanf读取错误数据和缓冲清除

原作者及原文链接:

https://blog.csdn.net/phao89/article/details/50545527

网友都是大神。