C语言为什么getchar与scanf可以接收scanf的空格和回车

scanf和getchar的区别,getchar的妙用_C++,C语言_ThinkSAAS
scanf和getchar的区别,getchar的妙用
scanf和getchar的区别,getchar的妙用
内容来源: 网络
今天再看getchar()函数,发现与scanf函数的知识混淆了,查找资料得出下面信息。
字符数据的输入:
  scanf()函数是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量中。
  在scanf()语句的格式串中由于没有非格式字符在“%d%d%d”之间作为输入时的间隔,因此在输入时要用一个以上的空格或回车符作为每两个输入数之间的间隔。
  scanf()在读取数字时会跳过空格、制表符和换行符!
看下面的程序。
<span style="color: # #include&stdio.h&
<span style="color: # int main()
<span style="color: # {
<span style="color: #
int a,b,c;
<span style="color: #
scanf("%d%d%d",&a,&b,&c);
<span style="color: #
printf("%d%d%d",a,b,c);
<span style="color: # }
  getchar()函数是键盘输入函数,其功能是从键盘上输入一个字符。简单来说就是getchar()函数在C程序中的功能是接收一个字符。
首先看下面scanf()的程序:
1 #include&stdio.h&
2 #include&stdlib.h&
3 int main(void)
int a,b,c;
printf("please input num a:n");
scanf("%d",&a);
printf("please input num b:n");
scanf("%d",&b);
<span style="color: #
printf("please input num c:n");
<span style="color: #
scanf("%d",&c);
<span style="color: #
printf("%d,%d,%d",a,b,c);
<span style="color: # }
运行结果:
再看下面char的程序:
1 #include&stdio.h&
2 #include&stdlib.h&
3 int main(void)
char a,b,c;
printf("please input num a:n");
scanf("%c",&a);
printf("please input num b:n");
scanf("%c",&b);
<span style="color: #
printf("please input num c:n");
<span style="color: #
scanf("%c",&c);
<span style="color: #
printf("%c,%c,%c",a,b,c);
<span style="color: # }
运行结果:
为什么会这样子呢?为什么到了num b的时候输入不了呢?难道?
我们再来看一下源代码:
程序连续接收了三个字符,在C中enter键代表一个换行符,所以当输入完a的值‘q’之后按下enter键,换行符立马被字符b接收了,然后程序再向下走,输入c的值‘w’。结果就会按顺序显示a,b,c的值,我们已经知道a=&q&,b=&n&,c=&w&;所以结果就会显示两行。
最后看下面getchar()程序:
1 #include&stdio.h&
2 #include&stdlib.h&
3 int main(void)
char a,b,c;
printf("please input num a:n");
scanf("%c",&a);
getchar();
printf("please input num b:n");
<span style="color: #
scanf("%c",&b);
<span style="color: #
getchar();
<span style="color: #
printf("please input num c:n");
<span style="color: #
scanf("%c",&c);
<span style="color: #
printf("%c,%c,%c",a,b,c);
<span style="color: # }
运行结果:
最后最后看下面的程序:
<span style="color: # #include &stdio.h&
<span style="color: # int main()
<span style="color: # {
<span style="color: #
<span style="color: #
a=getchar();
<span style="color: #
b=getchar();
<span style="color: #
putchar(a);
<span style="color: #
putchar(b);
<span style="color: # }
我们输入x-回车-y-回车  结果会是xy吗?不是的 结果是a=x b=&n&(回车)  当我们开始打x的时候,x在缓冲区,当我们按下回车的时候,第一个getchar()才获取到x这个值 顺利存到a里 但回车既是确定又是字符,回车&n&它也跟着进了缓冲区,并且和x一起被释放,x到了程序里 回车(&n&)也到了程序里,并且被第2个 getchar()获取,此时我们输入y,这时缓冲区里有一个字符 &y&, 然后我们又按下回车,&y&和&n&又一起准备被释放,由于程序里没有第3个getchar(),所以&y&和&n&还留在缓冲区,但它们两个已经是在准备状态中,如果程序又出现一个getchar(),&y&不需要你按回车它会直接进入到第3个getchar(),getchar()是依次获取,按先后顺序,不会先获取&n&,而&n&正等待着马上进入第4个getchar()内容来源:
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信您的举报已经提交成功,我们将尽快处理,谢谢!
C语言编译生成的exe程序是doc界面的,C语言的exe程序是在你编译后就自动会生成的,在你那个文件目录下的Debug文件夹里.
仉 拼音: zhāng, 笔划: 4
部首: 亻 五笔输入法: wmn
基本解释:
------------------------...
(一)C 语言具有下列特点:
1. C是中级语言
它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象汇编语言一样...
大家还关注}

我要回帖

更多关于 c语言scanf输入空格 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信