C 语言中,getchar()、fgetc()、putchar() 和 fputc() 是常用的字符输入/输出函数,它们用于处理单个字符的读写操作。本文主要介绍在使用 getchar()、fgetc()、putchar() 和 fputc() 函数时,使用 int 和 char 的区别。

1、getchar()fgetc()

getchar()fgetc() 都用于从输入中读取单个字符。getchar() 从标准输入 (stdin) 读取字符。fgetc() 从指定的文件流中读取字符。返回值是 int,而不是 char

#include <stdio.h>

int main() {
    int c;  // 使用 int 正确处理 EOF
    while ((c = getchar()) != EOF) {  // 与 EOF 比较
        putchar(c);  // 输出字符
    }
    return 0;
}

2、putchar()fputc()

putchar()fputc() 用于输出单个字符。putchar() 输出到标准输出 (stdout)。fputc() 输出到指定的文件流。与 getchar()fgetc() 不同,这些函数接受 int 类型 的输入参数。

为了与 getchar()fgetc() 保持一致,这些函数的参数类型定义为 int。这使得输入和输出操作可以无缝配合。在 C 中,当 char 类型的参数传递给函数时,会自动提升为 int,因此无需显式转换。

#include <stdio.h>

int main() {
    int c = 'A';  // 使用 int 确保兼容性
    putchar(c);   // 输出 'A'
    return 0;
}

3、读取字符时使用 int

始终将 getchar()fgetc() 的返回值存储在 int 类型的变量中,以正确处理 EOF

#include <stdio.h>

int main() {
    int c;

    printf("请输入字符,按 Ctrl+D(Linux/Unix/Mac)或 Ctrl+Z(Windows) 结束输入:\n");

    // 使用 getchar() 读取输入,并在 EOF 前使用 putchar() 输出
    while ((c = getchar()) != EOF) {
        putchar(c);  // 将读取到的字符打印到屏幕
    }

    printf("\n输入结束。\n");
    return 0;
}

4、必要时进行类型转换

如果需要将读取到的字符存储为 char 类型,可以在确保安全的情况下进行显式转换。

#include <stdio.h>

int main() {
    int c;  // 使用 int 而不是 char 以正确处理 EOF
    printf("请输入字符,按 Ctrl+D (Linux/Mac) 或 Ctrl+Z (Windows) 结束输入:\n");
    
    // 从标准输入逐字符读取,直到遇到 EOF
    while ((c = getchar()) != EOF) {
        char ch = (char)c;  // 将 int 安全转换为 char
        putchar(ch);        // 将字符输出到标准输出
    }

    printf("\n读取结束。\n");
    return 0;
}

推荐文档

相关文档

大家感兴趣的内容

随机列表