c语言中的scanf输入语句的问题

w_shd 2002-10-18 09:34:46
源程序如下:
#include <stdio.h>
main(){
int i=0;
while(i!=3){
printf("Input:");
scanf("%d",&i);
}
return 0;
}
如果输入一个字符,那么程序将进入死循环,为什么?怎样避免???
...全文
38 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vanhui 2002-10-18
  • 打赏
  • 举报
回复
这是一个标准输入不能匹配类型的问题。由于你所输入的字符开始无法匹配给第一次循环的SCANF,就将保留并去匹配下一次的SCANF,但是一直都无法匹配的,所以程序进入死循环。只要在后面加一个GETCHAR()就可以了。#include <stdio.h>
main(){
int i=0;
while(i!=3){
printf("Input:");
scanf("%d",&i);
getchar();
}
return 0;
}

Gentlewolf7408 2002-10-18
  • 打赏
  • 举报
回复
在scanf()之前加上 _flushall()吧,把输入缓冲区中的回车给清掉。
jh20001 2002-10-18
  • 打赏
  • 举报
回复
scanf("%d",&i);中的%d是指输入十进制数,改成%c就行
jianliang79 2002-10-18
  • 打赏
  • 举报
回复
你是不是输入字符后没按回车键?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧