C++(getchar())
getchar()
是 C 和 C++ 中的一个标准输入函数,定义在头文件 <cstdio>
或 <stdio.h>
中。它用于从标准输入流(通常是键盘)读取一个字符。
1. 函数原型
int getchar(void);
- 返回值:
- 成功时,返回读取到的字符(作为
int
类型返回),字符会被转换为其 ASCII 值。 - 如果遇到输入错误或文件结束(EOF),返回
EOF
,这是一个特殊的常量,通常定义为-1
。
- 成功时,返回读取到的字符(作为
2. 功能
getchar()
从标准输入流读取下一个字符。它会等待用户输入,直到用户按下某个键。按下键后,getchar()
会读取该字符并返回其对应的 ASCII 值(作为 int
类型),然后等待下一个输入。此过程通常是阻塞的,直到输入可用为止。
3. 常见用法
- 读取单个字符:
getchar()
适用于读取并处理单个字符,特别是当你需要逐个处理输入字符时。
#include <cstdio>
int main() {
char ch;
ch = getchar(); // 读取一个字符
printf("You entered: %c\n", ch);
return 0;
}
- 读取字符直到文件结束(EOF): 可以在循环中使用
getchar()
逐个读取字符,直到遇到文件结束(EOF)。例如:
#include <cstdio>
int main() {
int ch;
while ((ch = getchar()) != EOF) { // 当没有遇到 EOF 时继续读取
putchar(ch); // 输出读取的字符
}
return 0;
}
4. 与 getchar()
的区别
getchar()
与 getch()
等其他字符输入函数的区别:
getchar()
是标准 C/C++ 库的一部分,具有跨平台兼容性。getchar()
会等待输入字符,阻塞程序,直到用户输入字符并按回车。- 它是一个通用的字符输入函数,不依赖于具体的输入方式或终端设备。
5. 处理输入错误
getchar()
可以返回 EOF
,表示发生了输入错误或文件结束。需要判断返回值是否是 EOF
来处理错误情况。
#include <cstdio>
int main() {
int ch;
while ((ch = getchar()) != EOF) {
// 处理字符
}
if (ch == EOF) {
printf("Input error or EOF reached\n");
}
return 0;
}
6. 注意事项
getchar()
返回的是一个int
类型,而不是char
类型。这是为了能区分有效字符(0-255)和EOF
(通常是 -1)。getchar()
读取一个字符后,输入缓冲区中的下一个字符会被返回。如果需要处理多个字符或获取完整的行输入,通常会使用getchar()
与循环或其他输入函数(如fgets()
)结合使用。
7. 总结
getchar()
是一个简单的字符输入函数,广泛用于处理逐个字符的输入,通常与 EOF
配合判断是否结束输入。尽管它非常直观,但也要注意其阻塞性质和 EOF
错误处理。