#include <stdio.h>
/* copy input to output; 2nd version */
main()
{
int c;
c = getchar();
while(c != EOF)
{
putchar(c);
c = getchar();
}
}
在键盘或者屏幕上的字符都是用 char 类型存储的,当然也可以用 int 类型来存储。这个地方使用 int 来存储字符有一个微妙但很重要的原因:为了把有效数据和输入的结束(EOF)区分开来。getchar() 在没有更多输入数据时返回一个特殊值,这个值不会跟任何实际的字符混淆。这个值称为 EOF(end of file,文件结束)。我们必须把 c 变量声明成一个大到足够存储任何 getchar() 返回的值的类型。我们不能用 char 类型,因为 c 必须大到足够容纳任意可能的 char 还有 EOF。因此我们使用 int 类型。
C语言中 getchar() 的函数声明:
int getchar ( void );
返回值是int,在Linux下输入命令:man getchar(),结果更加详细:
NAME
fgetc, fgets, getc, getchar, gets, ungetc - input of characters and strings
[…]
DESCRIPTION
fgetc() reads the next character from stream and returns it as an unsigned char cast to an int, or EOF on
end of file or error.
getchar()从标准输入(stdin)流中读取一个字符,把它当作一个 unsigned char,然后强制转化成 int 类型来做为返回值,如果遇到文件末尾或者错误,返回EOF。
更详细的说明看这里:https://www.cnblogs.com/3me-linux/p/4121465.html