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语言 读入字符时需要注意的一个问题”

  1. felix021 发表于 2008年11月17日 16:58

    这个才是最好的:
    fflush(stdin);

    Slyar 回复 于 11月 20th, 2008 22:19:

    以前写过那个了,这次换一个~嘎嘎~

  2. 打工皇帝 发表于 2008年11月17日 20:06

    不学习脑子都快生锈了。

发表您的评论[审核后显示]




关闭
E-mail It