EOF
在getchar()
之前,先讨论EOF
的概念.
EOF
(End Of File)表示的是文件结束符. 不同于行结束符 \n
, EOF
表示的是文件或流的数据源的结束信号,通常在不同平台上数值不同, 例如在 UNIX/LINUX 环境下多为-1 . 之所以为-1, 是因为getchar
返回的是一个unsigned int
, 可以用负值来与正常情况区分. EOF
产生是通过块读取函数, 块读取函数返回读取的字节数,如果它小于要求读取的字节数,就会出现一个文件结束符。
我们可以通过按键得到一个EOF
, 例如在Unix下 的CTRL D
. 但CTRL D
并非直接表示结束符,而是通过中断Terminal,让Kernel得以知道文件结束,并由Terminal的驱动程序将其翻译为EOF
.
getchar函数用法
在了解EOF
的概念后,可以开始学习getchar
的内容.
函数原型
int getchar ( void );
getchar
从标准输入流 stdin
中读取下一个字符并返回,当读取成功时, char
被提升为int
型, 并返回对应的值,当读取到EOF
时,返回EOF
,并且将EOF
标识符(EOF indicator)设置为feof,在读取失败时,同样返回EOF
,但讲标识符设置为ferror
.
示例代码
/* getchar example : typewriter */
#include <stdio.h>
int main ()
{
int c;
puts ("Enter text. Include a dot ('.') in a sentence to exit:");
do {
c=getchar();
putchar (c);
} while (c != '.');
return 0;
}