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
    2021-11-05 14:10:44

    目录

    零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

    一.getchar函数简介

    1.getchar 原理

    getchar 函数用于获取用户输入,达到人机交互的目的,当程序调用 getchar 时,程序就等着用户键盘按键并将用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止(回车字符也放在缓冲区中),当用户键入回车之后,getchar 才开始从缓冲区中读入字符,例如:用户按下键盘的 a 键,那么 getchar 函数就返回字符 a

    2.getchar 函数声明

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

    #include<stdio.h>
    /*
    *函数描述:获取控制台用户的输入字符
    *
    *返回值:返回用户输入值对应的 char 值
    */
    char getchar(void)
    

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

    3.getchar 使用场景

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

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

    二.getchar函数使用

    /******************************************************************************************/
    //@Author:猿说编程
    //@Blog(个人博客地址): www.codersrc.com
    //@File:C语言教程 - C/C++ getchar函数
    //@Time:2021/08/04 08:00
    //@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    /******************************************************************************************/
    
    #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 ,如何把缓冲区的所有字符都获取到呢?

    /******************************************************************************************/
    //@Author:猿说编程
    //@Blog(个人博客地址): www.codersrc.com
    //@File:C语言教程 - C/C++ getchar函数
    //@Time:2021/08/03 08:00
    //@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    /******************************************************************************************/
    
    #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 函数之后,程序回一直等待用户输入直到按下回车之后程序才会继续执行,示例代码如下:

    /******************************************************************************************/
    //@Author:猿说编程
    //@Blog(个人博客地址): www.codersrc.com
    //@File:C语言教程 - C/C++ getchar函数
    //@Time:2021/08/03 08:00
    //@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    /******************************************************************************************/
    
    
    #include "stdafx.h"
    #include "stdio.h"
    
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    
    	printf("猿说编程 - python和C++教程\n");
    	getchar();
    	printf("程序结束\n");
    	return 0;
    }
    /*
    猿说编程 - python和C++教程
    */
    

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

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

    四.猜你喜欢

    1. C 语言 数组下标越界和内存溢出区别
    2. C 语言 使用指针遍历数组
    3. C 语言 指针和数组区别
    4. C 语言 指针数组和数组指针区别
    5. C 语言 野指针
    6. C 语言 函数值传递和址传递
    7. C 语言 函数不定长参数
    8. C 语言 函数指针
    9. C 语言 指针函数
    10. C 语言 回调函数 callback
    11. C 语言 #pragma once
    12. C 语言 #include <> 与 #include “” 区别
    13. C 语言 const 修饰函数参数
    14. C 语言 const 和 define 区别
    15. C 语言 #运算符
    16. C 语言 ##运算符
    17. C 语言 __VA_ARGS__
    18. C 语言 ##__VA_ARGS__
    19. C 语言 函数不定长参数 ##__VA_ARGS__经典案例
    20. C 语言 va_start / va_end / va_arg 自定义 printf 函数
    21. C 语言 main 函数
    22. C 语言 main 函数参数 main(int argc, char *argv[])
    23. C 语言 局部变量
    24. C 语言 全局变量
    25. C 语言 全局变量和局部变量区别
    26. C 语言 static
    27. C 语言 extern
    28. C/C++ putchar 函数
    29. C/C++ getchar 函数

    未经允许不得转载:猿说编程 » C/C++ getchar 函数

    更多相关内容
  • C语言中的getchar和putchar的使用方法 getchar是以行为单位进行存取的。 当用getchar进行输入时,如果输入的第一个字符为有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D)...
  • 以前在看K&R的The C Programming Language(SecondEdition)第1.5节的字符输入/输出,被getchar()和EOF所迷惑了。可能主要还是由于没有搞清楚getchar()的工作原理和EOF的用法。因此,感觉很有必要总结一下,不然,很多...
  • 今天再看getchar()函数,发现与scanf函数的知识混淆了,查找资料得出下面信息。
  • 编程实现用getchar函数从键盘输入一个小写字母,并用putchar函数输出对应的大写字母。
  • 博客源码1:httpsblog.csdn.netu014411348articledetails108776934
  • C语言 getchar()原理及易错点解析

    万次阅读 多人点赞 2019-08-01 19:52:10
    文章目录一.getchar()系列1.getchar()工作原理及作用2.使用getchar()清理回车\n3.使用getchar()清理缓存 一.getchar()系列 1.getchar()工作原理及作用 工作原理:getchar()是stdio.h中的库函数,它的作用是从stdin...

    一.getchar()系列

    1.getchar()工作原理及作用

    • 工作原理:getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了,第一次getchar()时,确实需要人工的输入,但是如果你输了多个字符,以后的getchar()再执行时就会直接从缓冲区中读取了。
      实际上是 输入设备->内存缓冲区->getchar()
      你按的键是放进缓冲区了,然后供程序getchar()
      你有没有试过按住很多键然后等一会儿会滴滴滴滴响,就是缓冲区满了,你后头按的键没有存进缓冲区.
      键盘输入的字符都存到缓冲区内,一旦键入回车,getchar就进入缓冲区读取字符,一次只返回第一个字符作为getchar函数的值,如果有循环或足够多的getchar语句,就会依次读出缓冲区内的所有字符直到’\n’.要理解这一点,之所以你输入的一系列字符被依次读出来,是因为循环的作用使得反复利用getchar在缓冲区里读取字符,而不是getchar可以读取多个字符,事实上getchar每次只能读取一个字符.如果需要取消’\n’的影响,可以用getchar();来清除,这里getchar();只是取得了’\n’但是并没有赋给任何字符变量,所以不会有影响,相当于清除了这个字符.

    • 作用1:从缓冲区读走一个字符,相当于清除缓冲区。

    • 作用2:前面的scanf()在读取输入时会在缓冲区中留下一个字符’\n’(输入完按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,接下来的scanf()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误。

    2.使用getchar()清理回车\n

    这个问题转载自n_s_X14,但是作者在文章最后留了一个问题,现在在这里给大家解释一下原因。

    文章的源码为:

    #include <stdio.h>
    
    int main(void){
        char m[40];
        char n;
        printf("please input first str:\n");    //提示用户输入第一个字符串
        scanf("%s",m);                         //获取用户第一个输入字符串
        printf("you input str is :%s\n",m);    //输出用户的输入的第一个字符串
        printf("input second char :\n");        //提示用户输入第二个字符
        scanf("%c",&n);                         //获取用户的第二个字符
        printf("now you input second char is :%c\n",n);//输出用户输入的第二个字符
        return 0;
        
    }
    

    Output:

    please input first str:
    abc
    you input str is :abc
    input second char :
    now you input second char is :
    
    Program ended with exit code: 0
    

    问题:我们第一次输入abc后成功打印出来了you input str is :abc,但是执行到printf("input second char :\n");时,还没等到第二次输入就打印出来了。这是为什么??

    原因:

    其实在我们第一次输入并按下回车的时候,控制台一共获得了四个字符,分别是:a、b、c、回车(enter)。但是因为scanf()方法遇到非字符的时候会结束从控制台的获取,所以在输入’abc’后,按下 ‘回车(enter)’ 的同时,将’abc’这个值以字符串的形式赋值给了类型为 ‘char’ 的 ‘m’ 数组,将使用过后的字符串: ‘回车(enter)’ 保存在控制台输入的缓冲区,然后继续执行下一段输出代码,然后又要求用户输入。此时,因为上一次被使用过后的字符串被保存在缓冲区,现在scanf()方法从控制台的缓冲区获取上一次被使用过后的字符串,并只截取第一个字符: ‘回车(enter)’ ,此时控制台缓冲区才算使用完了。所以在看似被跳过的输入,其实已经scanf()方法已经获取了我们的输入了,这个输入就是一个 ‘回车(enter)’ 。

    解决问题:
    使用getchar()方法,清除掉abc后面的缓存(回车enter)。

    #include <stdio.h>
    
    int main(void){
        char m[40];
        char n;
        printf("please input first str:\n");    //提示用户输入第一个字符串
        scanf("%s",m);                         //获取用户第一个输入字符串
        printf("you input str is :%s\n",m);    //输出用户的输入的第一个字符串
        getchar();
        printf("input second char :\n");        //提示用户输入第二个字符
        scanf("%c",&n);                         //获取用户的第二个字符
        printf("now you input second char is :%c\n",n);//输出用户输入的第二个字符
        return 0;
        
    }
    

    Output:

    please input first str:
    abc
    you input str is :abc
    input second char :
    de
    now you input second char is :d
    Program ended with exit code: 0
    

    3.使用getchar()清理缓存

    文章结束时留了一个问题:如果在第一次输入ab后加一个空格再回车,又会出现原来的问题,即程序只输出了ab后就自动跳过下一次的输入之间退出了,控制台输出如下图所示。
    在这里插入图片描述
    原因

    1. 在获取用户第一个输入字符串时,scanf("%s",&m);,我们用%s作为转换说明,%s的作用是“把输入解释成字符串。从第一个非空白字符开始,到下一个空白字符之前的所有字符都是输入。”所以scanf把输入的ab空格+回车就理解为ab+回车(ab后面没有空格),但是依然以ab空格+回车的形式存储在缓存区
    2. 我们输入ab空格+回车,在缓存区是这样存放的:在这里插入图片描述
      其中,第三格存放的为空格键。
      当程序运行完 getchar();后,只清除了第三格中的空格键,因为一次执行getchar();只清除一个缓存,留下了第四格中的回车键,因此再次出现了同样的问题。

    解决问题:那么就是说只要运行两次getchar();,清除掉第三格和第四格就可以正常了。

    #include <stdio.h>
    
    int main(void){
        char m[40];
        char n;
        printf("please input first str:\n");    //提示用户输入第一个字符串
        scanf("%s",m);                         //获取用户第一个输入字符串
        printf("you input str is :%s\n",m);    //输出用户的输入的第一个字符串
        
        getchar();                              //第一次清除缓存
        getchar(); 								//第二次清除缓存
        
        printf("input second char :\n");        //提示用户输入第二个字符
        scanf("%c",&n);                         //获取用户的第二个字符
        printf("now you input second char is :%c\n",n);//输出用户输入的第二个字符
        return 0;
        
    }
    

    Output:
    在这里插入图片描述
    由此可见,当我们第一次输入ab空格+回车后,程序正常运行。

    进一步:如果我们输入的是a空格b+回车scanf("%s",m); 这一步只能读取到a,因为a后面有空格。但是a空格b+回车在缓冲区这样存放:
    在这里插入图片描述
    因此,如果想要程序正常运行则需要在输出用户的输入的第一个字符串后加入三次getchar();操作,即删除掉第二,第三,第四格的内容。

    问题:如果我们输入a空格bbbbbbbb+回车,那可能需要无数个getchar();来清除缓存,这时应该怎么办??

    解决方法:加入while循环while(getchar()!='\n') continue;

    #include <stdio.h>
    
    int main(void){
        char m[40];
        char n;
        printf("please input first str:\n");    //提示用户输入第一个字符串
        scanf("%s",m);                         //获取用户第一个输入字符串
        printf("you input str is :%s\n",m);    //输出用户的输入的第一个字符串
        
        while(getchar()!='\n')					//通过while循环删除缓存
            continue;
            
        printf("input second char :\n");        //提示用户输入第二个字符
        scanf("%c",&n);                         //获取用户的第二个字符
        printf("now you input second char is :%c\n",n);//输出用户输入的第二个字符
        return 0;
        
    }
    

    这时,我们输入a空格bbbbbbbb+回车,程序正常运行。
    在这里插入图片描述
    解析:

     while(getchar()!='\n')
            continue;
    

    可以看出这段代码代替了无数个getchar(),他的作用是跳过剩余的输入行
    在这里插入图片描述
    第一次while循环消除第二格缓存,第二次while循环消除第三格缓存……直到第八次。最后一次同样,getchar()也消除了回车。

    while(getchar()!='\n')可以拆分成两步,

    • 第一步调用getchar()方法(这里getchar();只是取得了’\n’但是并没有赋给任何字符变量,所以不会有影响,相当于清除了这个字符)。
    • 第二步判断获取到的缓存是否等于’\n’。

    4.混合scanf()与getchar()

    假设程序要求用getchar()处理字符输入,用scanf()处理数值输入,这两个函数都能很好的完成任务,但是不能混合使用因为getchar()读取每个字符,包括空格、制表符和换行符;而scanf()在读取数字时则会跳过空格、制表符和换行符。

    例:
    要求用户输入一个字母和两个数字,输出以第一个数字为行数,第二个数字为列数,以字母为内容的数列,要求可以不断输入直至键入回车退出程序:

    #include <stdio.h>
    void display(char cr,int lines,int width);
    int main(int argc, const char * argv[]) {
       
        int ch;
        int rows,cols;
        printf("Enter a character and two integers:\n");
        while((ch=getchar())!= '\n'){
            scanf("%d %d", &rows,&cols);
            display(ch, rows, cols);
            printf("Enter another character and two integers;\n");
            printf("Enter a newline to quit.\n");
        }
        printf("Bye.\n");
        return 0;
        
        }
    void display(char cr,int lines,int width){
        int row,col;
        
        for(row=1; row<= lines; row++){
            for(col =1; col<=width; col++){
                putchar(cr);
            }
            putchar('\n');
                }
    }
    

    output:
    在这里插入图片描述
    我们发现,在第一次输入成功打印后,程序自动退出。这明显不符合我们的题目要求。
    原因是,输入的c23其实是c23+换行符,scanf()函数把这个换行符留在了缓存中。getchar()不会跳过换行符,所以在进入下一轮迭代时,还没来得及输入字符,它就读取了换行符,然后将其赋值给了ch。而ch是换行符正式终止循环的条件。

    如何改进??

    1. 我们需要删除scanf()函数留在缓存中的换行符即可。
    2. 在if语句中使用一个break语句,可以在scanf()的返回值不等于2时终止程序,即如果一个或两个输入值不是整数或者遇到文件结尾就终止程序。
    #include <stdio.h>
    void display(char cr,int lines,int width);
    int main(int argc, const char * argv[]) {
       
        int ch;
        int rows,cols;
        printf("Enter a character and two integers:\n");
        while((ch=getchar())!= '\n'){
            if( scanf("%d %d", &rows,&cols)!=2 ){
                break;
            }
            display(ch, rows, cols);
            
            while(getchar()!='\n'){
                continue;
            }
            printf("Enter another character and two integers;\n");
            printf("Enter a newline to quit.\n");
        }
        printf("Bye.\n");
        return 0;
        
        }
    void display(char cr,int lines,int width){
        int row,col;
        
        for(row=1; row<= lines; row++){
            for(col =1; col<=width; col++){
                putchar(cr);
            }
            putchar('\n');
                }
    }
    

    Output:
    在这里插入图片描述


    题外话:

    scanf()中转化符的问题
    在这里插入图片描述
    在这里插入图片描述
    问题:从上面两张图片中可以看出,当scanf("%d",&c);改为scanf("%c",&c);时,控制台中出现了图二的问题。character为什么为空白??

    原因:
    如果格式是%c,那么任何字符都是它想要的,所以第二个程序中的第二个scanf("%c")会得到‘+’后面的空格’ '。如果格式是%d,则会忽略任何空白字符(空格、回车、制表符等),忽略的意思是,从缓冲区里删除,但并不保存;如果遇到数字,则拿出并保存给后面的整数,也就是说%d的时候,scanf想要的字符是数字和空白符。所以第一个程序里的第二个scanf("%d")忽略掉了空格,正确输入了数字。

    展开全文
  • getchar

    2022-04-12 21:54:47
    里面对于getchar的解释 C 库函数 -getchar() <stdio.h> 描述 C 库函数int getchar(void)从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于getc带有 stdin 作为参数。 声明 下面是 getchar...

    我们首先打开msdn

    里面对于getchar的解释

    C 库函数 - getchar()

     <stdio.h>

    描述

    C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于 getc 带有 stdin 作为参数。

    声明

    下面是 getchar() 函数的声明。

    int getchar(void)

    参数

    • NA

    返回值

    该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。

    实例

    下面的实例演示了 getchar() 函数的用法。

    #include <stdio.h>
    
    int main ()
    {
       char c;
     
       printf("请输入字符:");
       c = getchar();
     
       printf("输入的字符:");
       putchar(c);
    
       return(0);
    }

    让我们编译并运行上面的程序,这将产生以下结果:

    请输入字符:a
    输入的字符:a

    getchar()函数机制

    getchar()函数实际上是int getchar(void),所以它返回的是ASCII码,所以只要是ASCII码表里有的字符它都能读取出来。在调用getchar()函数时,编译器会依次读取用户键入缓存区的一个字符(注意这里只读取一个字符,如果缓存区有多个字符,那么将会读取上一次被读取字符的下一个字符),如果缓存区没有用户键入的字符,那么编译器会等待用户键入并回车后再执行下一步 (注意键入后的回车键也算一个字符,输出时直接换行)。
     

    int main()
    {
    	char ch;
    	printf("请输入字符:"); //1 2 回车
    	scanf("%c", &ch); // 读取 1
    	printf("%c", getchar()); //输出 2
    }
    

     在这里插入图片描述

     

     第一个字符1被char ch读取,所以getchar()依次读取下一个未读取字符2

    再看看这几个代码:

    //代码什么意思

    //代码1

    #include<stdio.h>
    int main()
    {
      int ch=0;
      while((ch=getchar()!=EOF)
      putchar(ch);
      return 0;
    }

    这里代码适当的修改是可以用来清理缓冲区

    展开全文
  • 主要给大家介绍了关于C语言中getchar()的返回类型为什么是int的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • getchar函数输入一串字符,依次读入。当字符不等于换行符\n时用while循环和条件语句统计个数。a,b,c,d相当于计数器,分别存放字母、空格、数字、和其他字符的个数。循环结束后,用printf函数输出a,b,c,d的值。
  • 与缓存区相关最常见的操作就是字符的输入与输出操作getchar,getc,getch,getche,gets系列函数。 第一个例子(与getchar有关): 代码如下:#include int main() { int ch; ch=getchar(); ch=getchar(); printf(“%...
  • getchar函数

    千次阅读 2020-12-22 12:35:21
    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的用法及实例解析

    万次阅读 多人点赞 2021-08-16 23:23:57
    getchar——读取字符的函数 int getchar(void) 返回类型为int,参数为void. 有人可能会有疑惑,getchar既然是读取字符的,为什么返回类型是int呢? 1、getchar其实返回的是字符的ASCII码值(整数)。 2、getchar在...
  • getchar()深入理解】

    2021-12-29 20:10:03
    getchar()相关使用说明初稿,求访问指正!!!
  • ​ 1、首先来看一个例子: #include <stdio.h> int main( ) { int c; c = getchar();... c= getchar();...这里主要解释下为什么要用int型来接受getchar函数。...因为getchar函数除了返回终端输入的字符外,在遇到Ct
  • getchar 是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说 ,如果stdin有数据的话不用输入就可以直接读取了。而getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符。 getch() 实际...
  • 【C语言】getchar 函数的正确使用

    千次阅读 多人点赞 2022-04-17 12:49:58
    目录一、getchar 函数二、缓冲区1、什么是缓冲区2、为什么要存在缓冲区3、缓冲区的类型4、缓冲区的刷新三、getchar 函数的正确使用1、getchar 的换行问题2、getchar 与 scanf 的混合使用 一、getchar 函数 从上面的...
  • C语言中getchar的使用方法和读取规则
  • getchar()函数的详解
  • 『C语言』getchar() & putchar() 〖input & output〗

    多人点赞 热门讨论 2022-03-24 19:26:44
    此时,张三就有疑问了謓泽謓泽为什么我看有些代码上的getchar()可以输入多组数据啊,甚至有些代码可以输入字符直到你输入回车('\n')它就会退出啊,这个是怎么回事鸭(●'◡'●) 这就说明你对这个getchar()的功能不太...
  • C语言getchar的用法详解

    千次阅读 多人点赞 2022-04-22 09:21:06
    getchar getchar的定义 MSDN中的解释是从流中读取一个字符 int ch = getchar() //通过getchar获取字符的ASCII码值传到ch里面存储 这里注意:getchar获取字符以后 通过ASCII码值的形式存储在ch里 为什么不用...
  • linux getchar函数使用

    2021-05-13 21:54:50
    1 函数介绍1) 函数原型int getchar(void);2) 函数功能从stdin中读取一个字符。3) 返回值返回读取字符的ASCII值或者EOF字符或者出错值。4) 头文件#include 2 函数使用2.1 getchar函数的特点Linux下编写的一个例子:#...
  • 目录 写在前面: 一、输入方式 1.cin>> 2.cin.get() 3.cin.getline() 下面介绍几个string的输入: 4.getline() 5.gets() 6.getchar() 二、输入控制 三、例子 写在前面: 主要注意的包括以下几个点(重要性不分先后):...
  • 【C】getchar函数与其在缓冲区的应用

    多人点赞 热门讨论 2022-04-20 09:02:44
    ✨博客主页:心辛向荣 ✨系列专栏:【从0到1,C语言学习】 ...介绍分析getchar函数以及其在缓冲区的应用 目录 getcher函数 2️⃣for循环 .1 getchar函数 首先我们知道是getchar是用来获取 .........

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 456,413
精华内容 182,565
关键字:

getchar

友情链接: phpws_0e9o3w.rar