一、核心功能
- putchar 函数:相当于 "单个字符打印机",仅能输出 1 个字符(包括可见字符、换行符
\n等控制字符)。- getchar 函数:相当于 "单个字符扫描仪",仅能读取 1 个字符(从键盘输入,包括回车、空格等)。
两者均属于 C 标准库<stdio.h>,是考研 408 真题中常考的基础 I/O 函数,重点考查返回值、缓冲机制和异常处理。
二、语法与用法
1. putchar 函数
- 格式:
int putchar(int ch); - 核心说明:参数
ch:可以是字符常量(如'A')、字符变量(如char c='b'),或 ASCII 码值(如 97 对应'a')。 - 返回值:++成功输出返回字符的 ASCII 码(int 型)++;失败返回 EOF(本质是 - 1)。
- 考研常考示例:
cpp
#include <stdio.h>
int main() {
putchar('X'); // 输出:X
putchar(10); // 输出换行(10是'\n'的ASCII码)
char c = 'Y';
putchar(c); // 输出:Y
return 0;
}
2. getchar 函数
- 格式:
int getchar(void); - 核心说明:++无参数++,从键盘读取 1 个字符。
- 返回值:++成功读取返回字符的 ASCII 码(int 型)++;读取结束(Ctrl+Z/Windows、Ctrl+D/Linux)或失败时返回 EOF。
- 关键考点:返回值是 int 型(而非 char 型),因为 EOF(-1)无法用 unsigned char 存储(真题易错点!)。
- 考研常考示例:
cpp
#include <stdio.h>
int main() {
int ch; // 必须用int接收,不能用char!
printf("输入一个字符:");
ch = getchar(); // 读取键盘输入的1个字符
putchar(ch); // 输出读取到的字符
return 0;
}
三、考研核心考点与易错点
1. 缓冲机制(高频考点)
- getchar 是 "行缓冲" 输入:输入后需按回车确认,回车符
\n会存入缓冲区,下次调用 getchar 会优先读\n。 - 真题易错示例:
cpp
// 问题:输入"A"并回车后,输出什么?
#include <stdio.h>
int main() {
int ch1 = getchar();
int ch2 = getchar();
putchar(ch1);
putchar(ch2);
return 0;
}
- 输出:
A(换行)------ch1 读A,ch2 读缓冲区的\n。 - 解决方案:用
getchar()吸收多余的\n,或清空缓冲区。
2. EOF 的应用(必考点)
- EOF(End of File)表示输入结束,是循环读字符的常用条件。
- 标准用法:
cpp
#include <stdio.h>
int main() {
int ch;
// 循环读字符,直到Ctrl+Z/Ctrl+D结束
while((ch = getchar()) != EOF) {
putchar(ch); // 回显输入字符
}
return 0;
}
3. 常见误区
- 误区 1:用
char接收 getchar 返回值,无法正确判断 EOF。 - 误区 2:认为 putchar 只能输出可见字符,忽略其可输出
\n、\t等控制字符。
四、真题总结
- 核心考点:返回值类型(int)、缓冲机制、EOF 判断、换行符处理。
- 解题技巧:遇 getchar/putchar 题,先分析缓冲区内容,再检查返回值与 EOF 处理。