核心答案
getchar() 函数所需的头文件是 <stdio.h>。

详细解释
为什么是 <stdio.h>?
getchar() 是 C 语言标准输入输出库(Standard Input/Output Library)中的一个函数,这个库提供了大量用于处理程序与外部世界(如键盘、屏幕、文件)进行数据交换的函数。
<stdio.h>是 "Standard Input/Output Header" 的缩写,意思是“标准输入输出头文件”。- 它包含了这些标准 I/O 函数的函数原型声明、宏定义(如
EOF)以及类型定义(如size_t)。 - 当你在程序中使用
getchar()时,编译器需要知道这个函数的返回类型(是int)、参数列表(无参数)等信息,这些信息都定义在<stdio.h>文件中。
如果你的程序中使用了 getchar(),就必须在代码的开头包含 #include <stdio.h>,否则,编译器会报错,提示“未声明的标识符”。
getchar() 的基本用法
getchar() 的作用是从标准输入流(stdin)中读取一个字符,在大多数情况下,标准输入流就是你的键盘。
函数原型:

int getchar(void);
返回值:
- 返回读取到的字符(作为一个
int类型的值)。 - 如果到达文件末尾(End-of-File, EOF),则返回
EOF。 - 如果发生读取错误,也返回
EOF。
EOF 是一个在 <stdio.h> 中定义的宏,通常值为 -1,使用 int 类型来接收 getchar() 的返回值非常重要,这样才能正确区分返回的字符(即使是 char 类型的 0xFF 也会被正确解释)和 EOF(-1)。
代码示例
这是一个最经典的 getchar() 用法示例:从键盘读取字符,直到用户按下 Ctrl+D (Linux/macOS) 或 Ctrl+Z (Windows) 来发送 EOF 信号。
#include <stdio.h> // 必须包含的头文件
int main() {
int c; // 必须使用 int 类型来接收 getchar() 的返回值
printf("请输入一些字符,按 Ctrl+D (Linux/macOS) 或 Ctrl+Z (Windows) 结束:\n");
// 循环读取字符,直到遇到 EOF
while ((c = getchar()) != EOF) {
// 将读取到的字符原样输出到标准输出(屏幕)
putchar(c);
}
printf("\n输入结束,\n");
return 0;
}
代码解析:

#include <stdio.h>:包含了getchar()和putchar()的声明。int c;:声明一个整型变量c来存储getchar()的返回值。while ((c = getchar()) != EOF):这是一个getchar()的标准用法。c = getchar():调用getchar()读取一个字符,并将其赋值给c。- 这个表达式的值就是被赋值给
c的那个字符。 != EOF:判断这个字符是否等于EOF,如果不是,循环继续。
putchar(c);:将刚刚读取到的字符c输出到屏幕上,实现了“回显”功能。
常见错误
错误:使用 char 类型接收返回值
// 错误示例
#include <stdio.h>
int main() {
char c; // 错误:使用 char 类型
while ((c = getchar()) != EOF) { // 这里可能会出问题
putchar(c);
}
return 0;
}
为什么是错误的?
char 类型在很多系统上是 signed char,其范围通常是 -128 到 127,而 EOF 的值是 -1。getchar() 读取到的字符的 ASCII 码是 255(在某些字符集或无符号 char 的情况下),将其赋给一个 signed char 类型的变量 c 时,它可能会被解释为 -1,这会导致 c == EOF 的判断为真,循环提前意外终止,而不是在真正的文件结尾才结束。
正确做法: 始终使用 int 类型来接收 getchar() 的返回值。
| 问题 | 答案 |
|---|---|
| 头文件 | <stdio.h> |
| 作用 | 从标准输入(通常是键盘)读取一个字符。 |
| 返回类型 | int |
| 成功返回 | 读取到的字符(int 类型)。 |
| 失败/结束返回 | EOF (End-Of-File, 值通常为 -1)。 |
| 关键点 | 必须使用 int 类型变量来接收返回值,以正确处理 EOF。 |
只要你的代码中需要用到 getchar()、printf()、scanf() 等标准输入输出函数,第一件事就是在文件开头写上 #include <stdio.h>。
