15 处理文本与二进制文件的内容

在前一篇中,我们探讨了文件位置和缓冲的概念,这为接下来的文件操作打下了坚实的基础。在这一节中,我们将深入了解如何处理文本文件和二进制文件的内容,学习如何读取和写入这些文件,并举一些具体的例子来帮助理解。

文本文件和二进制文件的基本区别

在开始之前,我们首先需要了解什么是文本文件和二进制文件:

  • 文本文件:文本文件是由可见字符组成的文件,其内容可以用任何文本编辑器(如记事本)打开和查看。文本文件使用特定的编码格式(如ASCII或UTF-8)来表示字符。

  • 二进制文件:二进制文件包含的是原始字节数据,这些数据可能是文本、图像、音频或其他类型的信息。二进制文件通常无法用文本编辑器直接查看,因为其内容是由不可见的字节组成。

理解了这个基本概念后,我们可以更有效地进行文件内容的处理。

读取文本文件

我们可以使用 fopen 打开文本文件,使用 fgetsfscanf 来读取文件的内容。以下是一个读取文本文件的简单示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Unable to open file");
return 1;
}

char buffer[256];
while (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("%s", buffer);
}

fclose(file);
return 0;
}

在这个例子中,我们打开一个名为 example.txt 的文件并逐行读取其内容直到文件结束。fgets 函数安全且高效,有效地处理字符流。

写入文本文件

我们可以使用 fopen 以写模式打开文件,并使用 fprintffputs 来写入内容。以下是写入文本文件的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

int main() {
FILE *file = fopen("output.txt", "w");
if (file == NULL) {
perror("Unable to open file");
return 1;
}

fprintf(file, "Hello, World!\n");
fputs("This is a text file.\n", file);

fclose(file);
return 0;
}

在这个代码片段中,我们创建(或覆盖)一个名为 output.txt 的文件,并向其中写入一些文本内容。

读取二进制文件

读取二进制文件相对文本文件稍具挑战,但仍然可以通过 fopenfread 来实现。以下是一个例子,展示如何读取一个二进制文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main() {
FILE *file = fopen("image.bin", "rb");
if (file == NULL) {
perror("Unable to open file");
return 1;
}

unsigned char buffer[256];
size_t bytesRead = fread(buffer, sizeof(unsigned char), sizeof(buffer), file);

printf("Read %zu bytes from the binary file.\n", bytesRead);

fclose(file);
return 0;
}

在这个示例中,我们打开一个名为 image.bin 的二进制文件并读取最多 256 字节的数据。

写入二进制文件

写二进制文件的方式也类似,我们使用 fwrite 来写入数据。下面是一个写入二进制文件的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main() {
FILE *file = fopen("output.bin", "wb");
if (file == NULL) {
perror("Unable to open file");
return 1;
}

unsigned char data[5] = {0, 1, 2, 3, 4};
size_t bytesWritten = fwrite(data, sizeof(unsigned char), sizeof(data), file);

printf("Wrote %zu bytes to the binary file.\n", bytesWritten);

fclose(file);
return 0;
}

在这段代码中,我们创建了一个名为 output.bin 的二进制文件,并将一个字节数组写入到该文件中。

结论

到此为止,我们详细探讨了如何处理文本和二进制文件的内容,包括读取和写入的基本操作。通过这些示例,我们可以清楚地看到,在 C 语言中进行文件操作是相对直接的,但需要注意文件的打开模式(文本模式或二进制模式)和读取、写入函数的使用。

在下一节中,我们将开始讨论数据结构与算法的基础,特别是数组与链表。这将为我们在程序设计中管理数据奠定基础,同时也实现更复杂的操作。希望大家能在文件操作中取得进一步的理解,并准备好迎接下一个重要主题的挑战!

15 处理文本与二进制文件的内容

https://zglg.work/cplusplus-one/15/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论