前言:
我们知道输入输出函数有scanf/printf。除此之外,还有getchar、putchar等函数,那今天这篇文章就开始记录这两个函数的功能和用途。
1.getchar和putchar的文献
1.1关于getchar的文献:
getchar - 读取一个字符
翻译:
1.2关于putchar的文献
putchar - 输出/打印一个字符
翻译:
1.3返回值问题
因为:读取到字符的时候返回的是字符的ASCII码值,取值范围:ASCII:0~127
但如果读取失败,则返回的是EOF ---> -1
2.从键盘中输入一个字符
int main() { int ch = 0; while ((ch = getchar()) != EOF) { putchar(ch); } return 0; }
按F5执行,光标闪烁,说明在等待,要你输入东西。
2.1原理💨
getchar和scanf是用来输入数据的,那直接是从键盘上拿吗?不是。
🚩2.2如何理解:
❗理解1:
实际上,在键盘和各输入函数之间是有一个输入缓冲区的,在键盘上输入字符‘A’的时候,这时候键盘输入的‘A’还没到缓冲区,只有当按下回车的时候,那就触发了条件,同时也放了'\n'到缓冲区,对于getchar这个函数来说一次读一个字符,就读取走了'A',因为是while循环,所以第二次进入循环的时候, 会把'\n'读取进去
所以putchar输出的时候,'\n'造成的换行效果导致光标在第二行闪烁(红色箭头)
注意这里:putchar是输出,getchar是读取
❗理解2:
以下仅限于getchar函数
可以理解成两个缓冲区,字符输入的时候一个键盘缓冲区,会把输入东西放进键盘缓冲区,然后按下回车(enter)之后会有一个输入缓冲区,之后这个getchar函数从输入缓冲区里面读取数据,是这样的一个过程
关于理解1和理解2
就是一个理解上的一个差异而言,实质上没什么区别。
2.3关于程序如何结束
注意:键盘shift+6^+Z,这样是不能让程序停下来
需要:ctrl+Z,小写大写都无所谓的,都会转成Z