C语言 读入字符时需要注意的一个问题
2008年11月16日 23:21 . 分类 编程相关 . 被踩 522 次 .
文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。
今天做题时候遇到的问题,先看一段代码:
#include <stdio.h>
int main(){
int n;
char a;
scanf("%d",&n);
scanf("%c",&a);
printf("%c\n",a);
return 0;
}
我们希望先读入一个整数n,然后再读入一个字符a,最后输出字符a。但是经过测试我们发现上面这段代码是无法实现我们的要求的,它只会输出一个空行,这是为什么呢?
我们一步一步分析,当我们输入数字n以后,会按一个回车确认输入。我们知道换行符也是字符(\n),所以这个换行符也同样进入了等待读入字符的a,因此我们输出的a就是一个换行符。。。
那么怎么解决呢?很简单,只要我们使用getchar()函数忽略这个换行符就可以了,最后的代码如下:
#include <stdio.h>
int main(){
int n;
char a;
scanf("%d",&n);
getchar();
scanf("%c",&a);
printf("%c\n",a);
return 0;
}
今天做题的时候不止一次遇到这个问题,特地写出来。
您可能还对以下内容感兴趣
收藏、分享这篇文章! 用 RSS feed 订阅本博客 什么是订阅? Trackback评论
3 条评论 关于 “C语言 读入字符时需要注意的一个问题”
发表您的评论[审核后显示]












这个才是最好的:
fflush(stdin);
Slyar 回复 于 11月 20th, 2008 22:19:
以前写过那个了,这次换一个~嘎嘎~
不学习脑子都快生锈了。