getchar()【还有fgetc(stream pointer)】返回一个int类型是个经典的问题,直观上getchar()返回一个char类型是合情合理的,且是理所当然的,我们知道,一个ASCII码的值是在0 -- 127之间,但作为一个函数,其编造者总希望有更强的功能,想到了,如果读字符时遇到问题(如硬件错误),则以EOF(-1)作为返回值。
现在的C语言中,一个字符变量可以是unsigned char类型,也可以是char类型,同样也可以是 signed char类型,char 和 signed char是相同的,但早期的C语言默认都是unsigned char,其表示的范围是 0 -- 255,那么表示读字符失败的EOF该如何表示呢,char是不行的,但int可以,这就是getchar()返回int的真实理由。
putchar() return the character written as an unsigned char cast to an int or EOF on error.
getchar() return the character read as an unsigned char cast to an int or EOF on end of file or error.