使用 C 语言反转文件内容

CCBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何使用 C 编程语言反转文件内容。我们将逐个字符读取输入文件的内容,并将其以相反的顺序写入输出文件。

注意:你需要自己创建文件 ~/project/main.c 来练习编码,并学习如何使用 gcc 编译和运行它。

cd ~/project
## 创建 main.c
touch main.c
## 编译 main.c
gcc main.c -o main
## 运行 main
./main

打开输入和输出文件

在第一步中,我们将使用 fopen() 函数打开输入和输出文件。我们将为这些文件创建两个文件指针,一个用于输入,另一个用于输出。

FILE *input_file, *output_file;
input_file = fopen("input.txt", "r");
output_file = fopen("output.txt", "w");

计算输入文件中的字符数量

在这一步中,我们将使用 fseek()ftell() 函数计算输入文件中的字符数量。
我们将使用 fseek(input_file, 0, SEEK_END); 将文件位置设置为文件末尾,并使用 ftell(input_file); 获取当前文件位置。
这将为我们提供输入文件中的总字符数。

fseek(input_file, 0, SEEK_END);
long total_characters = ftell(input_file);

将输入文件中的字符按逆序复制到输出文件

现在我们已经知道输入文件中的总字符数,接下来我们将按逆序将这些字符复制到输出文件中。
我们将逐个字符遍历输入文件,并使用 fputc() 函数将每个字符写入输出文件。
我们将从输入文件的最后一个字符开始,使用 fseek(input_file, -1L, SEEK_CUR); 向后移动。

for (long i = total_characters-1; i >= 0; i--) {
  fseek(input_file, i, SEEK_SET);
  char c = fgetc(input_file);
  fputc(c, output_file);
}

关闭输入和输出文件

在最后一步中,我们将使用 fclose() 函数关闭输入和输出文件。

fclose(input_file);
fclose(output_file);

总结

在本实验中,我们学习了如何使用 C 编程语言反转文件内容。我们打开了输入和输出文件,计算了输入文件中的字符数量,将字符按逆序复制到输出文件,并关闭了输入和输出文件。