首页 > 编程笔记 > 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() 的使用。

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() 调用能够正确读取用户输入的名字。

相关文章