首页 > 编程笔记 > C语言笔记(精华版)
C语言getchar函数的用法(非常详细和完整)
getchar() 是C语言中一个非常实用的输入函数,它主要用于从标准输入流(通常是键盘)读取单个字符。
getchar() 函数会等待用户输入,直到用户按下回车键。值得注意的是,getchar() 不仅可以读取可见字符,还可以捕获空格、制表符和换行符等特殊字符,这使得 getchar() 在处理各种输入场景时非常灵活。
getchar() 位于 <stdio.h> 头文件中,它的原型如下:
int getchar(void);
从原型可以看出,getchar() 不接受任何参数,返回值类型为 int。
尽管 getchar() 用于读取字符,但它的返回值类型是 int 而不是 char。这是因为 getchar() 需要能够表示所有可能的字符值(0 到 255)以及一个额外的值 EOF(通常定义为 -1)来表示输入结束。
- 如果成功读取到字符,getchar() 返回该字符的 ASCII 值。
- 如果到达文件末尾或发生读取错误,getchar() 返回 EOF。
使用示例
让我们通过一些示例来深入理解 getchar() 的使用。
1) 读取单个字符
#include <stdio.h> int main() { int ch; printf("请输入一个字符:"); ch = getchar(); printf("你输入的字符是:%c\n", ch); return 0; }
运行结果:
请输入一个字符:A 你输入的字符是:A
2) 读取多个字符直到遇到换行符
#include <stdio.h> 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 <stdio.h> 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() 调用能够正确读取用户输入的名字。