使用getchar()输入字符时的怪象
以回车符 '\n' 结束字符的输入
输入的字符(包括回车符)都放在输入缓冲区中
怪象背后的原因
行缓冲(Line-buffer)输入方式
*将输入字符先放入输入缓冲队列中,再从缓冲队列读取字符
*直到键入回车符或文件结束符EOF时,程序才认为输入结束
*一行输入结束,getchar()才开始从输入缓冲队列读取字符,前面函数没读走的数据仍在缓冲队列中,将被下一个函数读取
回车符 '\n' 的ASCII码是10
相当于一次性把键盘输入的一行字符都放入输入缓冲区
然后再从输入缓冲区逐个读取字符
更深层的原因
为什么getchar()要读到一个回车符或文件结束符EOF才进行一次处理操作呢?
为什么getcher()以行(而非字符)为单位读取字符呢?
*实际是按文件的方式读取字符
*文件一般是以行为单位的
另一个需要注意的问题
有时getchar()也可能返回负值
*若在Unix/Linux下遇到组合键Ctrl+D(Windows下为Ctrl+Z),则返回EOF(一般定义为-1)
解决方法: