先在这里推荐一个 网站 ,可以查找C语言中的库函数
getchar
介绍
- getchar意思是从标准输入中读取一个字符
- stdin分为std和in,std就是standard,in就是input
- 函数无参数,但有返回值,就是读取到的这个字符的ASCII码值,所以它的返回类型是int,但遇到文件尾部或者读取错误时会返回EOF
- 使用它必须引用头文件
例子
常见问题
为什么连确认的机会都没给我就确认失败了?
其实这与getchar与scanf在缓冲区读取字符不同有关
在这里就得先介绍下缓冲区
缓冲区
缓冲区也叫缓存,是内存空间的一部分。getchar和scanf等输入函数不是直接从标准输入中读取数据的,而是先通过键盘输入到缓冲区,再到缓冲区进行读取。
如图
解释问题
先从键盘中读取123456\n,因为scanf遇到空格、\n等表示读取结束,所以scanf实际拿走的只有123456,剩下的\n就被getchar读取了,再判断时,肯定是确认失败。
解决方法(清理缓冲区)
出现这种情况是因为getchar读取到我们不想要的字符,所以我们只要再使用一次getchar()读取清理缓冲区即可
再次提问
在我输入Y,并打下回车键时,这个\n会不会也进入缓冲区?答案是会的。
scanf与getchar的区别
- getchar只能读取一个字符,而scanf却可以读取各种类型的数据,包括字符、字符串、整形、浮点型、地址等等
- scanf不能读取空格和回车(目前我只知道这两个,后面如果有了解到就过来补充),所以有时候用到多空格的输入时可以使用getchar来互补
putchar
介绍
- putcahr意思是把一个字符写到标准输出
- stdout是标准输出的意思,std就是标准,out就是输出
- putchar有参数和返回值。参数是要输出的字符(这个字符的类型必须是整形,这就是与getchar的返回值想匹配),返回值是返回这个字符的ASCII码值,但putchar的返回值一般可以省略。
- 同样,使用它得包含头文件。
例子
这个函数我还没发现什么奇特的问题,如果有朋友发现了可以告诉下我。这个函数就讲到这了。
今天讲了getchar和putchar的作用,如有不对之处,请多多指正。