【C语言】getchar()和putchar()的用法


先在这里推荐一个 网站 ,可以查找C语言中的库函数

getchar

介绍

  1. getchar意思是从标准输入中读取一个字符
  2. stdin分为std和in,std就是standard,in就是input
  3. 函数无参数,但有返回值,就是读取到的这个字符的ASCII码值,所以它的返回类型是int,但遇到文件尾部或者读取错误时会返回EOF
  4. 使用它必须引用头文件

【C语言】getchar()和putchar()的用法_第1张图片
【C语言】getchar()和putchar()的用法_第2张图片

例子

【C语言】getchar()和putchar()的用法_第3张图片
常见问题
【C语言】getchar()和putchar()的用法_第4张图片

为什么连确认的机会都没给我就确认失败了?
其实这与getchar与scanf在缓冲区读取字符不同有关

在这里就得先介绍下缓冲区

缓冲区
缓冲区也叫缓存,是内存空间的一部分。getchar和scanf等输入函数不是直接从标准输入中读取数据的,而是先通过键盘输入到缓冲区,再到缓冲区进行读取。
如图【C语言】getchar()和putchar()的用法_第5张图片
解释问题
【C语言】getchar()和putchar()的用法_第6张图片

先从键盘中读取123456\n,因为scanf遇到空格、\n等表示读取结束,所以scanf实际拿走的只有123456,剩下的\n就被getchar读取了,再判断时,肯定是确认失败。

解决方法(清理缓冲区)出现这种情况是因为getchar读取到我们不想要的字符,所以我们只要再使用一次getchar()读取清理缓冲区即可

【C语言】getchar()和putchar()的用法_第7张图片
再次提问
在我输入Y,并打下回车键时,这个\n会不会也进入缓冲区?答案是会的。【C语言】getchar()和putchar()的用法_第8张图片


scanf与getchar的区别

  1. getchar只能读取一个字符,而scanf却可以读取各种类型的数据,包括字符、字符串、整形、浮点型、地址等等
  2. scanf不能读取空格和回车(目前我只知道这两个,后面如果有了解到就过来补充),所以有时候用到多空格的输入时可以使用getchar来互补

putchar

【C语言】getchar()和putchar()的用法_第9张图片

介绍

  1. putcahr意思是把一个字符写到标准输出
  2. stdout是标准输出的意思,std就是标准,out就是输出
  3. putchar有参数和返回值。参数是要输出的字符(这个字符的类型必须是整形,这就是与getchar的返回值想匹配),返回值是返回这个字符的ASCII码值,但putchar的返回值一般可以省略。
  4. 同样,使用它得包含头文件。

例子
【C语言】getchar()和putchar()的用法_第10张图片
这个函数我还没发现什么奇特的问题,如果有朋友发现了可以告诉下我。这个函数就讲到这了。


今天讲了getchar和putchar的作用,如有不对之处,请多多指正。

你可能感兴趣的:(c语言,算法,开发语言)