getchar 订阅
getchar是读入函数的一种。它从标准输入里读取下一个字符,相当于getc(stdin)。返回类型为int型,为用户输入的ASCII码或EOF。 展开全文
getchar是读入函数的一种。它从标准输入里读取下一个字符,相当于getc(stdin)。返回类型为int型,为用户输入的ASCII码或EOF。
信息
外文名
getchar
返回值类型
int
作    用
读取字符
属    性
读入函数
返回值
ASCII码
关联函数
getch
getchar介绍
getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了,第一次调用getchar()时,确实需要人工的输入,但是如果你输了多个字符,以后的getchar()再执行时就会直接从缓冲区中读取了 [1]  。
收起全文
精华内容
下载资源
问答
  • getchar

    2017-10-26 17:07:33
    getchar

    缓冲区

    一般情况下,由键盘输入的字符并没有直接送入程序,而是被存储在一个缓冲区当中。

    我们为什么要引入缓冲区呢?

      比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度
      又比如,我们使用打印机打印文档,由于打印机的打印速度相对较慢,我们先把文档输出到打印机相应的缓冲区,打印机再自行逐步打印,这时我们的CPU可以处理别的事情。

    getchar()

    • 作用:从缓冲区读走一个字符,相当于清除缓冲区
      你输入设备->内存缓冲区->程序getchar
    • 前面的scanf()在读取输入时会在缓冲区中留下一个字符’\n’(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,下一次会直接取走这个“无用的”回车符,从而导致读取有误。
    #include <stdio.h>
    int main()
    {
        char ch;
        char n;
        scanf("%c",&ch);
        scanf("%c",&n);
        printf("**%c**%d**",ch,n);
        return 0;
    }
    
    

    输入:

    a
    a

    结果:**a**10**

    #include <stdio.h>
    int main()
    {
        char ch;
        char n;
        scanf("%c",&ch);
        getchar();
        scanf("%c",&n);
        printf("**%c**%c**",ch,n);
        return 0;
    }
    

    输入:

    a
    a

    结果:**a**a**


    在终端输入字符时并非输入一个字符就会返回,而是在遇到回车换行前,所有输入的字符都会缓冲在键盘缓冲器中,直到回车换行一次性将所有字符按序依次赋给相应的变量,在这里一定要注意最后一个字符即’\n’,该字符也会赋给一个相应的变量(当然这要你定义的用来接收字符的变量数比你输入的可见字符多一才可以)。
    输入 

    1
    2
    3
    #include <stdio.h>
    int main()
    {
        char c,d;
        for(int i=1;i<=3;i++)
        {
            c=getchar();
            d=getchar();
            printf("%d\n%d\n",c,d);
        }
        return 0;
    }
    

    输出

    1
    49
    10
    2
    50
    10
    3
    51
    10

    展开全文
  • getchar的使用

    万次阅读 多人点赞 2018-06-28 13:13:20
    getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误 3. getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和...

    1.从缓冲区读走一个字符,相当于清除缓冲区  
      
    2.前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加一个
    getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误  
      
    3.  
    getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab)  
    getchar()使用不方便,解决方法:   
    (1)使用下面的语句清除回车:   
    while(getchar()!='\n');   
    (2)用getche()或getch()代替getchar(),其作用是从键盘读入一个字符(不用按回车),注意要包含头文件<conio.h>  
      
    4. 
    getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接
    读取了,第一次getchar()时,确实需要人工的输入,但是如果你输了多个字符,以后的getchar()再执行时就会直接从缓冲区中读
    取了。  
    实际上是 输入设备->内存缓冲区->程序getchar    
    你按的键是放进缓冲区了,然后供程序getchar    
    你有没有试过按住很多键然后等一会儿会滴滴滴滴响,就是缓冲区满了,你后头按的键没有存进缓冲区.    
    键盘输入的字符都存到缓冲区内,一旦键入回车,getchar就进入缓冲区读取字符,一次只返回第一个字符作为getchar函数的值,如果
    有循环或足够多的getchar语句,就会依次读出缓冲区内的所有字符直到'\n'.要理解这一点,之所以你输入的一系列字符被依次读出
    来,是因为循环的作用使得反复利用getchar在缓冲区里读取字符,而不是getchar可以读取多个字符,事实上getchar每次只能读取一
    个字符.如果需要取消'\n'的影响,可以用getchar();来清除,这里getchar();只是取得了'\n'但是并没有赋给任何字符变量,所以不
    会有影响,相当于清除了这个字符.还要注意的是这里你在键盘上输入ssss看到的回显正是来自于getchar的作用,如果用getch就看不

    到你输入了什么.

     

    1、首先,我们看一下这段代码:

    它的简单意思就是从键盘读入一个字符,然后输出到屏幕。理所当然,我们输入1,输出就是1,输入2,输出就是2。

    那么我们如果输出的是12呢?

    它的输出是1。

    这里我们先简单的解释下,因为当我们从键盘输入字符‘1’,‘2’,并按下回车后,我们的输入被放入了输入缓冲区,这个时候getchar()会从缓冲区中读取我们刚才的输入,一次只读一个字符,所以字符1就被拿出来了,赋值给了c,然后putchar()又将c放在了标准输出,也就是这里的屏幕,所以我们看见了最终的显示结果1。同时字符‘1’也被缓冲区释放了,而字符‘2’仍然被留在了缓冲区。而这样是很不安全的,有可能下次使用的时候,我们的缓冲区会读到一些垃圾,但是当程序结束的时候,它会自动刷新。

    2、我们接着看下面的代码:

    大家觉得这几行代码是什么意思呢?大家是否真的看懂了呢?

    如果你觉得你看懂了,那么我提一个问题,你觉得是不是你从键盘输入一个字符就会输出一个字符,直到遇见了换行符呢?

    emmmmm。

    如果你真的这么想了,那你就错了。

    它真正的运行过程应该是这样的:还记得我们刚才说过的东西吗,getchar()会从输入缓冲区去读取内容,也就是说我们把所有的内容都输入完成并且按下了Enter键后,我们的输入才被送进去了输入缓冲区,这个时候,while循环才开始工作,每一次getchar()从输入缓冲区读取一个字符,然后如果不是换行符就输出。

    3、那么我们为什么要使用缓冲区呢?

    举个例子,我们知道计算机CPU的处理速度很快的,而我们键盘的输入速度总是比不过CPU的处理速度,那么CPU就得一直等着键盘输入完,这样很浪费资源。于是,我们党键盘输入完了,再让CPU一次性处理,这样就会大大地提高效率。

    又比如,我们的打印机打印文档,打印机的处理速度是很慢的,所以我们会将文档输出到打印机的缓存中去,这样打印机就可以自行慢慢打印,而不必占用CPU资源。

    4、缓冲区的类型

      缓冲区 分为三种类型:全缓冲、行缓冲和不带缓冲。

      1、全缓冲

      在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。全缓冲的典型代表是对磁盘文件的读写。

      2、行缓冲

      在这种情况下,当在输入和输出中遇到换行符时,执行真正的I/O操作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作。典型代表是键盘输入数据。

      3、不带缓冲

      也就是不进行缓冲,标准出错情况stderr是典型代表,这使得出错信息可以直接尽快地显示出来。

    5、缓冲区的刷新

    缓冲区会在以下三种情况下被刷新:

    1、缓冲区满

    2、执行flush刷新缓冲区的语句

    3、程序正常结束。

    首先,用getchar()函数进行字符的输入,并不是直接从键盘这个硬件中读取输入的字符,而是从“输入缓冲区”中得到的字符。
    输入缓冲区是一个字符的队列,其中存储了所有你尚未读取的字符。
    每次调用getchar函数,它就会从输入缓冲区中读出第一个字符,并把这个字符从输入缓冲区中清除。
    然而,这个输入缓冲区的设计,是把所有从键盘上输入的东西都放进去的,包括你每次按的回车符‘\n’,
    而getchar函数只读走了你在回车前输入的那个字符,而将回车符保留在了输入缓冲区中。
    于是,第二次调用getchar时,函数就从输入缓冲区中读出了'\n'。
    要解决这个问题,有两种可行的途径。
    一是多加一个getchar(),过滤掉回车,但是这种方法有不足,就是如果你在调用第一个getchar时输入了多个字符,
    那么,加入一个getchar并不能把所有未读取的字符过滤。如果你的本意是重新从“键盘”读取的话,最好是加一个
    fflush(stdin);
    清除输入缓冲区

     

    展开全文
  • C语言中的getchar()与putchar()详解

    万次阅读 多人点赞 2018-04-13 14:47:49
    getchar() 用于读取用户从键盘输入的单个字符,它有一个整型的返回值,当发生读取错误的时候,返回整型值-1,当读取正确的时候,它会返回用户从键盘输的第一个字符的ASCII码,当程序调用getchar时.运行程序时就等着...
        getchar() 用于读取用户从键盘输入的单个字符,它有一个整型的返回值,当发生读取错误的时候,返回整型值-1,当读取正确的时候,它会返回用户从键盘输的第一个字符的ASCII码,当程序调用getchar时.运行程序时就等着用户从按键输入,用户输入的字符被放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中),当用户键入回车之后,getchar才开始从输入流中每次读入一个字符,输入的字符不只一个的时候,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完之后,才等待用户按键,getchar函数输入数字也按字符处理,单个的getchar函数输入多于一个字符时,只接收第一个字符
        putchar()向终端输出一个字符。其格式为putchar(ch),其中ch可以是被单引号(英文状态下)引起来的一个字符,可以是介于0~127之间的一个十进制整型数(包含0和127)(超过127就不是ASCII码了),也可以是事先用char定义好的一个字符型变量当c为一个被单引号(英文状态下)引起来的字符时,输出该字符(注:该字符也可为转义字符),当c为一个介于0~127(包括0及127)之间的十进制整型数时,它会被视为对应字符的ASCII代码,输出该ASCII代码对应的字符;当c为一个事先用char定义好的字符型变量时,输出该变量所指向的字符。当整型变量ch超出8位变量的范围时,ch则会变强制转化为8位变量(即取其低八位传过去输出),当为负数的时候,由于计算机存储负数是用补码表示的,所以传过去的二进制补码也被当做正数处理,也是取其低八位
        getchar()和putchar()函数包含在头文件stdio.h中,使用时需包含此头文件
     
    举些简单的例子:                                                                           
    #include “stdio.h”
    
    int main(void){
        char ch;
    
        ch = getchar();
        putchar(ch);
    
        return 0;
    }
     
    1.    输入一个a,然后按下回车,输出a                                             
                                                      
        2.   直接按下回车,然后输出也是回车空了一行,说明回车是被读取并放在键盘缓冲区中的
     
                                                                           
    #include “stdio.h”
    
    int main(void){
        char ch;
    
        ch = getchar();
        putchar(ch);
        ch = getchar();
        putchar(ch);
        putchar(ch);
    
        return 0;
    }

        1.  输入为a时,输出会出现a,并且加上两个回车,注意是有两个回车的,在第二个getchar()的时候已经将ch的值变为回车字符了,所以后面输出两个回车的,putchar()函数本身是最后不自动加回车符的

        

        2.  当第一次输入为回车时,那么此时键盘缓冲区只有回车符,并且结束输入,然后putchar函数输出回车符,也就是空一行,然后继续等待用户从终端输入字符,然后输入1,按下回车,那么此时ch的值就是字符1(注意这里输入的数字统统表示字符,输入123,那就是‘1’‘2’‘3’3个字符加上回车符),此时输出两个连续的1,并且后面没有回车

        

     

    展开全文
  • C/C++ getchar函数最后更新于:2020-05-29 23:11:28对于控制台程序,C语言中getchar函数一共有两个用处:1.可以和用户交互,获取用户的键盘输入,例如:用户按下键盘的a键,那么getchar函数就返回字符a;2.对于win32...

    C/C++ getchar函数

    最后更新于:2020-05-29 23:11:28

    对于控制台程序,C语言中getchar函数一共有两个用处:

    1.可以和用户交互,获取用户的键盘输入,例如:用户按下键盘的a键,那么getchar函数就返回字符a;

    2.对于win32控制台而言,getchar函数和system("pause")函数作用类似,解决控制台黑屏窗口一闪而过的问题;

    一.getchar函数简介

    1.getchar函数简介

    getchar函数有一个int或者char型的返回值,当程序调用getchar时,程序就等着用户键盘按键。用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止(回车字符也放在缓冲区中),当用户键入回车之后,getchar才开始从缓冲区中读入字符,例如:用户按下键盘的a键,那么getchar函数就返回字符a;

    2.`getchar`函数声明

    该函数声明在`stdio.h`头文件中,使用的时候要包含stdio.h头文件。如:

    #include

    char getchar(void)

    在C语言中对于控制台程序,我们一般通过`printf`函数输出信息到控制台窗口显示,而getchar函数则是可以从控制台获取用户的输入,而达到和用户交互的目的,注意两者的区别!

    二.getchar函数使用

    /************************************************************************/

    /*@文件名 : getchar.cpp

    /*@日 期 : 2020/5/14 21:52

    /*@作 者 : 猿说编程

    /*@公众号 : 猿说编程

    /*@博客 : www.shuopython.com

    /*@描述 : C语言教程 - getchar函数

    /************************************************************************/

    #include "stdafx.h"

    #include "stdio.h"

    #include "windows.h"

    int _tmain(int argc, _TCHAR* argv[])

    {

    printf("请输入字符:\n");

    char c = getchar();

    printf("获取到您输入的字符:%c\n",c);

    system("pause");

    return 0;

    }

    输出结果:

    请输入字符:

    w

    获取到您输入的字符:w

    请按任意键继续. . .

    因为我输入的是w,所以getchar函数返回的就是w,你输入任意按键都是可以的;

    值得注意的是:

    1.getchar函数返回的字符对应的占位符是 %c;

    2.getchar函数只能获取单个字符;

    3.回车键'\n'也在缓冲区中,并作为最后一个字符被getchar函数取出;

    如果在回车按下之前输入了多个字符,所有的字符都会被存在缓冲区中,getchar函数会默认返回第一个字符,例如:我们在回车之前输入了12345,如何把缓冲区的所有字符都获取到呢?

    /************************************************************************/

    /*@文件名 : getchar.cpp

    /*@日 期 : 2020/5/17 21:52

    /*@作 者 : 猿说编程

    /*@公众号 : 猿说编程

    /*@博客 : www.shuopython.com

    /*@描述 : C语言教程 - getchar函数

    /************************************************************************/

    #include "stdafx.h"

    #include "stdio.h"

    #include "windows.h"

    int _tmain(int argc, _TCHAR* argv[])

    {

    char c = getchar();

    for (;;) //死循环

    {

    if (c == '\n') //检查是不是回车键

    {

    printf("最后一个字符啦 %c \n", c);

    break;

    }

    else

    {

    printf("获取缓冲区字符 %c \n", c);

    c = getchar();

    }

    }

    system("pause");

    return 0;

    }

    输出:

    12345

    获取缓冲区字符 1

    获取缓冲区字符 2

    获取缓冲区字符 3

    获取缓冲区字符 4

    获取缓冲区字符 5

    最后一个字符啦

    请按任意键继续. . .

    由上面代码可以明白,回车'\n'按键是缓冲区中最后一个字符;

    三.getchar函数妙用

    一般控制台程序在运行的时候,只看到一个黑窗口一闪而过,具体显示的什么根本来不及看,在前面的文章中我们介绍了可以通过system函数解决这个问题,而今天我们使用getchar函数一样能完成这个功能,因为在调用getchar函数之后,程序回一直等待用户输入直到按下回车之后程序才会继续执行,示例代码如下:

    /************************************************************************/

    /*@文件名 : getchar.cpp

    /*@日 期 : 2020/5/17 21:52

    /*@作 者 : 猿说编程

    /*@公众号 : 猿说编程

    /*@博客 : www.shuopython.com

    /*@描述 : C语言教程 - getchar函数

    /************************************************************************/

    #include "stdafx.h"

    #include "stdio.h"

    int _tmain(int argc, _TCHAR* argv[])

    {

    printf("猿说编程 - python和C++教程\n");

    getchar();

    printf("程序结束\n");

    return 0;

    }

    输出:

    猿说编程 - python和C++教程

    运行这个程序,控制台输出了第一个printf函数的内容:猿说编程 – python和C++教程 ,而第二个printf函数的内容: 程序结束 并没有显示到控制台,是因为getchar函数在等待我们输入任意字符并按下回车;

    当我们按下键盘任意按键并敲回车之后,程序立即输出第二个printf函数的内容: 程序结束,然后主函数main结束,程序退出,控制台窗口消失;

    猜你喜欢:

    技术交流、商务合作请直接联系博主扫码或搜索:猿说编程

    猿说编程微信公众号 扫一扫关注

    赞赏

    微信赞赏支付宝赞赏

    展开全文
  • 今天再看getchar()函数,发现与scanf函数的知识混淆了,查找资料得出下面信息。
  • getchar用法

    2018-01-28 21:56:40
    折叠getchar() getchar由宏实现:#define getchar() getc(stdin)。getchar有一个int型的返回值。当程序调用getchar时.程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止(回车字符也...
  • getchar 使用

    2020-02-19 00:08:27
    c语言getchar的用法: 1.从缓冲区读走一个字符,相当于清除缓冲区 2.前面的scanf()在读取输入时会在缓冲区中留下一个字符’\n’(输入完s[i]的值后按回车键所致), 所以如果不在此加一个getchar()把这个回车符取走...
  • getchar函数

    2019-10-21 00:48:22
    #include <stdio.h> int main() ... ch = getchar(); putchar(ch); ch = getchar(); putchar(ch); putchar(ch); return 0; } 1.输入字符a,回车 ch=a 输出a 缓冲区此时有回车符 ch...
  • Getchar函数

    2017-11-11 17:22:27
    Getchar函数 1.功能: ①用于读入字符,一次只能从标准输入中读取下一个字符。 ②有时候也用getchar();来应对某些编译器编译运行时瞬间结束无法观察运行结果的情况,使得程序暂停运行。如果一个getchar();不够用...
  • c语言getchar

    2018-12-03 21:43:03
    关于getchar()用法小结; 总结来,就是它有两个作用,一个是作为一次输入的标志,驱动getchar读取缓冲区的字符,一种是文件结束的标志,结束输入
  • getchar提醒

    2018-08-24 22:52:45
    getchar是从黑色屏幕中读取字符的 例: while(1) { c = getchar(); } 如果输入12345,再回车(\n),则c依次变为12345\n,非常适合对字符串进行操作。
  • 解剖getchar

    2017-08-07 15:56:09
    getchar()是c语言中的io流的获取一个字符的函数。 getchar源码分析: 1,getchar-》getchar-》_fgetchar 2、在_fgetchar中调用了getc,getc调用了_getc_nolock(stream)。 3、_getc_nolock(stream)是个宏 #...
  • getchar详解

    2018-01-18 13:45:22
    本文转自关于C语言中getchar()的详细使用  在C语言中有个重要的库函数getchar(),可从终端获得一个字符的ASCII码值。在终端输入字符时并非输入一个字符就会返回,而是在遇到回车换行前,所有输入的在C语言中有个...
  • 与缓存区相关最常见的操作就是字符的输入与输出操作getchar,getc,getch,getche,gets系列函数。 第一个例子(与getchar有关): 代码如下:#include int main() { int ch; ch=getchar(); ch=getchar(); printf(“%...
  • C++字符的输入输出在C语言中用getchar和putchar来输入和输出单个字符,同样在C++中也可以使用这两个函数进行输入输出单个字符。字符输入函数——getchargetchar函数的作用是从终端设备(通常就是键盘)输入一个字符,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,007
精华内容 7,602
关键字:

getchar