c语言,getchar( ) 后输出ASCII码,老是自动出现10!(用的是vs2010环境)

上代码!调试时发现getchar后总是会被自动赋一个10显示在屏幕上。。。求有经验者告诉我这个bug出现在何处!#include<stdio.h>main(void){c... 上代码!调试时发现getchar后总是会被自动赋一个10显示在屏幕上。。。
求有经验者告诉我这个bug出现在何处!
#include<stdio.h>
main(void){
char c;
printf("continue?[y/n]");
c=getchar();
if(c=='y'){
printf("%s","\nHello!");
while(c!=EOF){
printf("%s","\ninput a letter\n");
c=getchar();
printf("%d",c);//转化为ASCII码输出
}
}
return;
}
展开
 我来答
Hustchx
2011-10-26 · TA获得超过784个赞
知道小有建树答主
回答量:392
采纳率:0%
帮助的人:295万
展开全部
10是换行符,就是你上面输入是否的时候,就是y或者n的时候,你要敲一个回车键确认吧,然后这个回车键就被送入输入缓冲区,所以,在输入的时候就会有10啦。 可以用一个getchar()来清空缓冲区,代码如下,你试试:
int main(void){
char c;
printf("continue?[y/n]");
c=getchar();
if(c=='y'){
printf("%s","\nHello!");
while(c!=EOF){
printf("%s","\ninput a letter:");
getchar();
c=getchar();
printf("%d",c);//转化为ASCII码输出
}
}
return;
}
百度网友1fc36d4
2011-10-26 · TA获得超过3128个赞
知道大有可为答主
回答量:1497
采纳率:100%
帮助的人:1815万
展开全部
#include<stdio.h>
int main(void){
char c;
printf("continue?[y/n]");
c=getchar();
fflush(stdin);
if(c=='y'){
printf("%s","\nHello!");
while(c!=EOF){
printf("%s","\ninput a letter\n");
c=getchar();
fflush(stdin);
printf("%d",c);//转化为ASCII码输出
}
}
return 0;
}

清缓存,回车符,甚至假设要你输入一个字母的时候,你输入好几个再回车,也能避免问题。比多加个getchar()安全
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
terranlong
2011-10-26 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3976万
展开全部
回车换行的ASCII值是10,用getchar首先获得你输入的字符,然后获得你输入的回车,当然每次都输出10了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syht2000
高粉答主

2011-10-26 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
printf("%s","\ninput a letter\n");后面加一句
fflush(stdin); 清除掉输入缓冲区就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
furious_tauren
2011-10-26 · TA获得超过4053个赞
知道大有可为答主
回答量:1913
采纳率:100%
帮助的人:755万
展开全部
printf("%s","\ninput a letter\n");
getchar(); //添加这句, 当我们按回车时,也会被当作一个字符,添加这个消取回车。
c=getchar();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式