C语言编程题将文本文件中的所有字母转换为大写

C 语言中,将文本文件中的所有字母转换为大写可以通过多种方法实现。可以使用 fopen、fgetc、fputc 和 toupper 函数,也可以使用 fopen、fgets、fputs 和 toupper 函数,还可以使用 fopen、fread、fwrite 和 toupper 函数。根据具体的需求和文件大小,可以选择不同的实现方式。

1、使用 fopen、fgetc、fputc 和 toupper 函数

逐字符读取文件内容,将其转换为大写后写入另一个文件中。

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

void convert_to_uppercase_fgetc_fputc(const char *input_file, const char *output_file) {
    FILE *in_fp = fopen(input_file, "r");
    FILE *out_fp = fopen(output_file, "w");

    if (in_fp == NULL || out_fp == NULL) {
        perror("Error opening file");
        return;
    }

    int ch;
    while ((ch = fgetc(in_fp)) != EOF) {
        fputc(toupper(ch), out_fp);
    }

    fclose(in_fp);
    fclose(out_fp);
}

int main() {
    convert_to_uppercase_fgetc_fputc("input.txt", "output.txt");
    return 0;
}

2、使用 fopen、fgets、fputs 和 toupper 函数

逐行读取文件内容,将每一行的内容转换为大写后写入文件。

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

// 自定义 strupr 函数,因为标准 C 库中没有 strupr
char *strupr(char *str) {
    char *orig = str;
    while (*str) {
        *str = toupper(*str);
        str++;
    }
    return orig;
}

void convert_to_uppercase(const char *input_file, const char *output_file) {
    FILE *in_fp = fopen(input_file, "r");
    FILE *out_fp = fopen(output_file, "w");

    if (in_fp == NULL || out_fp == NULL) {
        perror("Error opening file");
        exit(EXIT_FAILURE);
    }

    char buffer[1024];
    while (fgets(buffer, sizeof(buffer), in_fp) != NULL) {
        fputs(strupr(buffer), out_fp);
    }

    fclose(in_fp);
    fclose(out_fp);
}

int main() {
    convert_to_uppercase("input.txt", "output.txt");
    return 0;
}

3、使用 fopen、fread、fwrite 和 toupper 函数

一次性读取块数据,将其转换为大写后再写入文件。

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

void convert_to_uppercase_fread_fwrite(const char *input_file, const char *output_file) {
    FILE *in_fp = fopen(input_file, "r");
    FILE *out_fp = fopen(output_file, "w");

    if (in_fp == NULL || out_fp == NULL) {
        perror("Error opening file");
        return;
    }

    char buffer[1024];
    size_t bytes_read;
    while ((bytes_read = fread(buffer, 1, sizeof(buffer), in_fp)) > 0) {
        for (size_t i = 0; i < bytes_read; i++) {
            buffer[i] = toupper(buffer[i]);
        }
        fwrite(buffer, 1, bytes_read, out_fp);
    }

    fclose(in_fp);
    fclose(out_fp);
}

int main() {
    convert_to_uppercase_fread_fwrite("input.txt", "output.txt");
    return 0;
}

推荐阅读
cjavapy编程之路首页