请教一个关于c输出的问题
#include<stdio.h> int main()
{ int c=1; do{ scanf("%d",&c); printf("%d",c); }
while(c==1);
return 0;
}
上面的程序在输入非数字时陷入死循环,why?
[解决办法]
因为scanf是按格式匹配的,如果输入非数字,那么它就不会把数据从键盘缓冲区取走,那么卡在键盘缓冲区的这个非数字以及回车符,就会造成死循环。
解法:用getchar()消化掉回车符,或者fflush(stdin)。