getchar()函数

一、gechar()

1、概念

getchar()函数从键盘上读入一个字符,并显示该字符(回显)【敲什么键盘上就会显示什么】,但只有第一个字符作为函数的返回值。

 通常这样调用: char ch;

                       ch=getchar();                        等同于scanf("%c",&ch);

getchar()函数的括号中没有参数,该函数的输入一直到回车才结束。回车前输入的字符都会逐个显示到屏幕上,但只有第一个字符作为返回值。

#include<stdio.h>                                        #include<stdio.h>
int main(void)                                           int main(void)
{                                                      {
    char ch;                                                char ch;
    ch=getchar();//输入abc,输出为a                         while((ch=getchar())!='#')
    putchar(ch);                                            {
    return 0;                                                    putchar(ch);
}                                                                 return 0;
                                                             }//输入abc,输出abc,当输入'#'时,结束

在第二个程序中我们会输入一串字符,回车,屏幕上会显示我们输入的一串字符。这时候会有疑问,明明getchar()函数只显示一个字符,为什么它却把输入的都显示出来了?这需要涉及缓冲区。

输入可以分为非缓冲输入和缓冲输入。

     非缓冲输入:输入字符的立即回显  (输入的内容对程序立即可用)

     缓冲输入:输入的字符被收集并储存在一个被称为缓冲区的临时存储区域中。当按下回车键时,使所键入的字符块对程序变为可用。


缓冲分为两类:完全缓冲的行缓冲

   完全缓冲:缓冲区满时被清空(文件输入)

   行缓冲:遇到一个换行字符时将被清空缓冲区(键盘输入时,按下回车键将清空缓冲区)

对于getchar()函数

 当我们从键盘输入一堆字符时,这堆字符被存储在缓冲区中,当我们按下回车键时,就开始调用getchar()函数,把缓冲区最先存储的字符读取,并且把这个字符从缓冲区中清除。然后利用循环继续读取,释放。最后满足条件为止。在上一个例子中while((ch=getchar())!='#')指的是当缓存区中的数据碰到‘#‘后就结束输出。但我们也会碰到while((ch=getchar())!='\n')的情况,这里的意思是在缓冲区中遇到‘\n’就结束循环,而getchar()函数就是等待输入缓冲区中的数据 直到按回车(‘\n’)才结束,这样的话缓冲区就留下了‘\n’,这时候可以用getchar();函数把缓存区中剩余清空(过滤掉回车)。




  • 17
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值