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; }