首页 > C语言笔记

C语言getchar()读取一串字符,如何实现?

在C语言中,getchar() 是一个常用的字符输入函数,它可以从标准输入(通常是键盘)读取单个字符。但是,我们也可以利用 getchar() 来读取一串字符,这种方法特别适用于需要逐个处理输入字符的场景,如字符统计、字符串处理等。
 

getchar() 函数的原型定义在 stdio.h 头文件中,它的原型是:

int getchar(void);

getchar() 不接受任何参数,它的返回值是读取到的字符的 ASCII 码值(以 int 类型返回),或者在遇到文件结束符(EOF)时返回 -1。

基本用法

我们先来看一个简单的例子,展示如何使用 getchar() 读取一串字符直到遇到换行符:

#include <stdio.h>

int main() {
    int ch;
    printf("请输入一串字符:\n");
    while ((ch = getchar()) != '\n' && ch != EOF) {
        putchar(ch);
    }
    printf("\n读取完毕\n");
    return 0;
}

在这个例子中,我们使用 while 循环来持续读取字符。循环会一直执行,直到遇到换行符('\n')或文件结束符(EOF)。每读取一个字符,我们就立即使用 putchar() 函数将其输出。


运行这段代码,输入一串字符后按回车,你会看到类似这样的输出:

请输入一串字符:
Hello, World!
Hello, World!
读取完毕

字符计数

我们可以稍微修改上面的代码,来统计输入的字符数量:

#include <stdio.h>

int main() {
    int ch;
    int count = 0;
    printf("请输入一串字符:\n");
    while ((ch = getchar()) != '\n' && ch != EOF) {
        putchar(ch);
        count++;
    }
    printf("\n你输入了 %d 个字符\n", count);
    return 0;
}

这个程序会计算输入的字符数量,但不包括换行符。运行结果可能如下:

请输入一串字符:
C programming is fun!
C programming is fun!
你输入了 22 个字符

处理多行输入

如果我们想要处理多行输入,可以使用 EOF 作为结束标志。在大多数系统中,你可以通过按 Ctrl+D(Unix/Linux)或 Ctrl+Z(Windows)来发送 EOF 信号。

#include <stdio.h>

int main() {
    int ch;
    int lines = 0;
    int chars = 0;

    printf("请输入多行文本(按 Ctrl+D 或 Ctrl+Z 结束):\n");

    while ((ch = getchar()) != EOF) {
        putchar(ch);
        chars++;
        if (ch == '\n') {
            lines++;
        }
    }

    printf("\n你输入了 %d 行,共 %d 个字符\n", lines, chars);
    return 0;
}

这个程序会统计输入的行数和字符总数。示例输出:

请输入多行文本(按 Ctrl+D 或 Ctrl+Z 结束):
First line
Second line
Third line
^D
你输入了 3 行,共 33 个字符

输入验证

getchar() 还可以用于输入验证,例如,我们可以创建一个程序,只接受数字输入:

#include <stdio.h>
#include <ctype.h>

int main() {
    int ch;
    int num = 0;

    printf("请输入一个正整数:");

    while ((ch = getchar()) != '\n' && ch != EOF) {
        if (isdigit(ch)) {
            num = num * 10 + (ch - '0');
        } else {
            printf("错误:请只输入数字\n");
            return 1;
        }
    }

    printf("你输入的数字是:%d\n", num);
    return 0;
}

这个程序使用 isdigit() 函数(来自 ctype.h)来检查每个输入的字符是否为数字。如果输入非数字字符,程序会报错并退出。

注意事项

使用 getchar() 读取字符串时,需要注意以下几点:

相关文章