c语言中的scanf输入语句的问题
源程序如下:
#include <stdio.h>
main(){
int i=0;
while(i!=3){
printf("Input:");
scanf("%d",&i);
}
return 0;
}
如果输入一个字符,那么程序将进入死循环,为什么?怎样避免???
问题点数:20、回复次数:4Top
1 楼jianliang79(jianliang79)回复于 2002-10-18 09:44:43 得分 0
你是不是输入字符后没按回车键?Top
2 楼jh20001(十七郎)回复于 2002-10-18 09:52:17 得分 0
scanf("%d",&i);中的%d是指输入十进制数,改成%c就行Top
3 楼Gentlewolf7408(绅士狼)回复于 2002-10-18 09:52:24 得分 15
在scanf()之前加上 _flushall()吧,把输入缓冲区中的回车给清掉。Top
4 楼vanhui(飘零辉)回复于 2002-10-18 09:52:26 得分 5
这是一个标准输入不能匹配类型的问题。由于你所输入的字符开始无法匹配给第一次循环的SCANF,就将保留并去匹配下一次的SCANF,但是一直都无法匹配的,所以程序进入死循环。只要在后面加一个GETCHAR()就可以了。#include <stdio.h>
main(){
int i=0;
while(i!=3){
printf("Input:");
scanf("%d",&i);
getchar();
}
return 0;
}
Top




