前言:
getchar()和putchar()函数都是单字符函数I/O,每次只能处理一个字符。getchar()是输入,putchar()是输出。
在了解函数之前先说一下缓冲区,什么是缓冲区?用户输入的字符被收集并存储在一个临时存储区中,该存储区就叫"缓冲区"。
为什么要有缓冲区?C Primer Plus书籍上是这样介绍的:首先,把若干字符作为一个块进行传输比逐个发送这些字符节约时间。其次如果用户打错字符,可以直接通过键盘修正错误。当最后按下Enter键时,传输的是正确的输入。
了解缓冲区基本性质,再来说说getchar()函数,getchar()函数是在控制台上输入一个字符,按下回车键的时候就会退出。如果按回车之前输入了不止一个字符,其它字符会保留在"缓冲区"中,等待后续getchar调用读取(输出)。而putchar()函数的作用如开头所说在控制台上输出一个字符,仅此而已。
另外在调用getchar()函数在读取(输出)文件,检测到文件末尾会返回一个特殊的值:即EOF。通常EOF定义在stdio.h文件中:#define EOF (-1)。在这里十万个为什么又来了,为什么是-1?在了解EOF之前又回到了getchar()函数,getchar()是有一个int型的返回值,通常该函数返回值类型介于0~127之间,这些值对应标准的字符集。但如果系统能识别扩展字符集,该函数的返回值可能又是一个变数0~255