缓冲区与scanf printf

一、知识点解释:

1、printf 向终端输出字符串;scanf 接收终端的输入
2、缓冲区
(1)printf 应用程序将输出的内容先放入缓冲区,一个一个字符依次放,缓冲区再将所有字符显示在终端
(2)scanf 敲回车时,终端的所有内容全部进入缓冲区(\n也在),然后应用程序拿走需要的内容,但是\n还在缓冲区,再用getchar()拿走,当缓冲区没有内容时会等待用户输入

二、代码案例

#include <stdio.h>

/*
printf 向终端输出字符串 
scanf 接收终端的输入 
缓冲区:输入输出流 IO流 cout cin 
*/
int main(){
    char a;
    printf("请输入a:"); 
    scanf("%c", &a);
    
    char b;
    printf("请输入b:");
    getchar();
    scanf("%c", &b);
    
    char c; 
    printf("请输入c:");
    scanf("%c", &c);
    
    printf("a=%c b=%c c=%c\n",a,b,c);
    return 0;
}

三、运行结果

image.png

四、解释:

1、输入a=x之后敲了一个空格
2、输入b之前有一个getchar()拿走了\n因此没有影响
3、输入c之前没有getchar(),因此c拿走了那个\n,不需要等待终端输入,直接在缓冲区拿走\n结束了程序

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容