getchar、putchar以及输入缓冲区(上)

简介: getchar、putchar以及输入缓冲区(上)

前言:

       我们知道输入输出函数有scanf/printf。除此之外,还有getchar、putchar等函数,那今天这篇文章就开始记录这两个函数的功能和用途。


1.getchar和putchar的文献


1.1关于getchar的文献:

getchar - 读取一个字符


0756557a2f3d42088fb1dbf9fa79aaf8.png


翻译:

931f6815a9f242b4bde3e277e33fa470.png


1.2关于putchar的文献

putchar - 输出/打印一个字符

2035d0797fb04e3290ef45307ba0b07f.png

翻译:

1582099d030e46989af0c7ce75ab8211.png


1.3返回值问题

fc0864b556594a5d9d589db1a89c58d3.png

因为:读取到字符的时候返回的是字符的ASCII码值,取值范围:ASCII:0~127

但如果读取失败,则返回的是EOF ---> -1


2.从键盘中输入一个字符


int main()
{
  int ch = 0;
  while ((ch = getchar()) != EOF)
  {
    putchar(ch);
  }
  return 0;
}


按F5执行,光标闪烁,说明在等待,要你输入东西。

b06d627437dd408db4a9c3c5c5468a54.png


2.1原理💨

d3162753369c4fddbeb34119bb3808f9.png

getchar和scanf是用来输入数据的,那直接是从键盘上拿吗?不是。


🚩2.2如何理解:

❗理解1:

实际上,在键盘和各输入函数之间是有一个输入缓冲区的,在键盘上输入字符‘A’的时候,这时候键盘输入的‘A’还没到缓冲区,只有当按下回车的时候,那就触发了条件,同时也放了'\n'到缓冲区,对于getchar这个函数来说一次读一个字符,就读取走了'A',因为是while循环,所以第二次进入循环的时候, 会把'\n'读取进去

18ba0146f40f452384e981f1b55612ed.png

所以putchar输出的时候,'\n'造成的换行效果导致光标在第二行闪烁(红色箭头

注意这里:putchar是输出,getchar是读取


❗理解2:

以下仅限于getchar函数

可以理解成两个缓冲区,字符输入的时候一个键盘缓冲区,会把输入东西放进键盘缓冲区,然后按下回车(enter)之后会有一个输入缓冲区,之后这个getchar函数从输入缓冲区里面读取数据,是这样的一个过程


关于理解1和理解2

就是一个理解上的一个差异而言,实质上没什么区别。


2.3关于程序如何结束

f6a9381c008a4471993d15421d4f1f3b.png

注意:键盘shift+6^+Z,这样是不能让程序停下来

需要:ctrl+Z,小写大写都无所谓的,都会转成Z

相关文章
|
3月前
|
存储 C语言
【C语言小知识】getchar与putchar
【C语言小知识】getchar与putchar
|
5月前
putchar()函数
【6月更文挑战第24天】putchar()函数。
112 2
|
5月前
|
C语言
用getchar和putchar读/写字符
用getchar和putchar读/写字符
46 0
|
6月前
getchar()&putchar()函数
getchar()&putchar()函数。
37 1
scanf和getchar区别
scanf和getchar区别
170 0
getchar() & putchar() 函数
getchar() & putchar() 函数。
149 2
|
数据安全/隐私保护
getchar、putchar以及输入缓冲区(下)
getchar、putchar以及输入缓冲区(下)
|
C语言
【C语言】scanf/fscanf/sscanf和printf/fprintf/sprintf的详细介绍
【C语言】scanf/fscanf/sscanf和printf/fprintf/sprintf的详细介绍
|
数据安全/隐私保护
getchar()与putchar()函数详解
getchar与putchar其实最基本的作用就是用getchar读取一个字符,再用putchar输出一个字符
186 0
|
C语言
论Scanf、Gets、Getchar的区别
论Scanf、Gets、Getchar的区别
163 0