问一个C的小问题,关于getchar和循环的。。。

#include<stdio.h>voidmain(){inta=0,i;charc;for(i=10;i>=0;i--){printf("a=%d\n",a);c=ge... #include <stdio.h>

void main()
{
int a=0,i;
char c;
for (i=10;i>=0;i--)
{
printf("a=%d\n",a);
c=getchar();
a++;
}
}
我的目的是输入一个字符,a就加1.但是,每次输入任意字符,就会执行两次循环。要是直接回车,就是一次循环。为什么?
展开
 我来答
hehe2o2o
2009-11-01 · TA获得超过538个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:139万
展开全部
使用getchar()函数读入字符时也将回车符读入
并且当输入多个字符时,getchar()函数先将所有函数保存在内存中,然后一个一个读取
这里你输入一个字符后回车,实际上是按两个字符来处理的
#include <stdio.h>

void main()
{
int a=0,i;
char c;
for (i=10;i>0;i--)
{
c=getchar();
a++;
printf("%d\n",a);
printf("%c\n",c);
}

}
你可以调试看看,循环第一次会是你输入的字符,第二次就是回车了

具体解决方案是将getchar改成getch,你可以到网上搜索这两个函数的不同
#include <stdio.h>

void main()
{
int a=0,i;
char c;
for (i=10;i>=0;i--)
{
printf("a=%d\n",a);
c=getch();
a++;
}
}
herg2009
2009-11-01 · TA获得超过289个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:115万
展开全部
试一下这个程序,输入结束时再按回车,可以输入任意多的字符。
#include <stdio.h>

void main()
{
int a=0,i;
char c;
while((c=getchar())!='\n')
a++;
printf("a=%d\n",a);
}

按你的那个程序,你是不是每输入一个字符就按一次回车!?那是不行的,因为回车也是一个字符的,当然要多加1了!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
feiniaoflyer
2009-11-01 · TA获得超过542个赞
知道小有建树答主
回答量:585
采纳率:0%
帮助的人:532万
展开全部
getchar把你按的enter键当换行符读入了,
可以在c=getchar();下面加一句printf("c=%d\n",c);来输出c的ASCII码,其中最后一次始终为10(换行的ASCII码)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式