getchar() 是C语言中一个非常实用的输入函数,它主要用于从标准输入流(通常是键盘)读取单个字符。
getchar() 函数会等待用户输入,直到用户按下回车键。值得注意的是,getchar() 不仅可以读取可见字符,还可以捕获空格、制表符和换行符等特殊字符,这使得 getchar() 在处理各种输入场景时非常灵活。
getchar() 位于
int getchar(void);
从原型可以看出,getchar() 不接受任何参数,返回值类型为 int。
尽管 getchar() 用于读取字符,但它的返回值类型是 int 而不是 char。这是因为 getchar() 需要能够表示所有可能的字符值(0 到 255)以及一个额外的值 EOF(通常定义为 -1)来表示输入结束。
如果成功读取到字符,getchar() 返回该字符的 ASCII 值。
如果到达文件末尾或发生读取错误,getchar() 返回 EOF。
使用示例
让我们通过一些示例来深入理解 getchar() 的使用。
1) 读取单个字符
#include
int main() {
int ch;
printf("请输入一个字符:");
ch = getchar();
printf("你输入的字符是:%c\n", ch);
return 0;
}
运行结果:
请输入一个字符:A
你输入的字符是:A
2) 读取多个字符直到遇到换行符
#include
int main() {
int ch;
printf("请输入一行文本:\n");
while ((ch = getchar()) != '\n' && ch != EOF) {
putchar(ch);
}
printf("\n输入结束\n");
return 0;
}
运行结果:
请输入一行文本:
Hello, getchar() function!
Hello, getchar() function!
输入结束
3) 使用 getchar() 清除输入缓冲区
#include
int main() {
int age;
char name[50];
printf("请输入你的年龄:");
scanf("%d", &age);
// 清除输入缓冲区中的换行符
while (getchar() != '\n');
printf("请输入你的名字:");
fgets(name, sizeof(name), stdin);
printf("你好,%s你的年龄是 %d 岁。\n", name, age);
return 0;
}
运行结果:
请输入你的年龄:25
请输入你的名字:Alice
你好,Alice
你的年龄是 25 岁。
在这个示例中,我们使用while (getchar() != '\n');来清除输入缓冲区中残留的换行符,确保后续的 fgets() 调用能够正确读取用户输入的名字。