33 文件操作之文件的读写操作
在上一篇文章中,我们探讨了如何打开与关闭文件。在本篇中,我们将深入学习如何在 C 语言中进行文件的读写操作。这些操作将使我们能够处理和存储大量的数据,从而使程序更加灵活与实用。
文件的读写操作
在 C 语言中,文件的读写操作主要通过标准库中的函数来实现。这些函数允许我们将数据从内存写入文件,或者从文件中读取数据到内存中。以下是一些常用的文件读写函数:
fgetc()
fgets()
fputs()
fprintf()
fread()
fwrite()
在进行文件读写操作之前,我们需要确保文件已成功打开,并且操作完成后要及时关闭文件。
一、文本文件的读写
1. 写入文本文件
我们可以使用 fprintf()
或 fputs()
函数向文本文件中写入数据。下面是一个简单的例子,演示如何创建文件并将一些文本写入其中。
#include <stdio.h>
int main() {
FILE *file;
file = fopen("example.txt", "w"); // 以写入模式打开文件
if (file == NULL) {
printf("Error opening file!\n");
return 1;
}
fprintf(file, "Hello, World!\n"); // 写入字符串
fputs("This is a file operation example.\n", file); // 使用 fputs 写入
fclose(file); // 关闭文件
return 0;
}
在这个例子中,我们首先以写入模式("w"
)打开文件 example.txt
。然后使用 fprintf()
和 fputs()
函数向文件中写入了两行文本。最后,通过 fclose()
函数关闭文件。
2. 读取文本文件
读取文本文件可以使用 fgets()
或 fgetc()
函数。以下是读取文件内容的示例代码:
#include <stdio.h>
int main() {
FILE *file;
char buffer[100];
file = fopen("example.txt", "r"); // 以读取模式打开文件
if (file == NULL) {
printf("Error opening file!\n");
return 1;
}
// 使用 fgets 逐行读取
while (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("%s", buffer); // 打印读取的行
}
fclose(file); // 关闭文件
return 0;
}
在这个例子中,我们以读取模式("r"
)打开 example.txt
文件,并使用 fgets()
逐行读取内容。最后,将读取到的内容打印到屏幕上。
二、二进制文件的读写
C 语言也支持以二进制格式读取和写入文件。使用 fread()
和 fwrite()
函数进行二进制文件的操作。下面是一个示例:
1. 写入二进制文件
#include <stdio.h>
struct Data {
int id;
float value;
};
int main() {
FILE *file;
struct Data data = {1, 45.5};
file = fopen("data.bin", "wb"); // 以二进制写入模式打开文件
if (file == NULL) {
printf("Error opening file!\n");
return 1;
}
fwrite(&data, sizeof(struct Data), 1, file); // 写入结构体数据
fclose(file); // 关闭文件
return 0;
}
在这个例子中,我们定义了一个 struct Data
,并将它的实例写入到了名为 data.bin
的二进制文件中。
2. 读取二进制文件
#include <stdio.h>
struct Data {
int id;
float value;
};
int main() {
FILE *file;
struct Data data;
file = fopen("data.bin", "rb"); // 以二进制读取模式打开文件
if (file == NULL) {
printf("Error opening file!\n");
return 1;
}
fread(&data, sizeof(struct Data), 1, file); // 读取结构体数据
printf("ID: %d, Value: %.2f\n", data.id, data.value); // 打印读取的数据
fclose(file); // 关闭文件
return 0;
}
在这个例子中,我们从 data.bin
文件中读取结构体数据,并将其打印到屏幕上。
总结
在本篇中,我们学习了如何在 C 语言中进行文件的读写操作,包括对文本文件和二进制文件的处理。文件的读写操作是 C 语言中一个重要的组成部分,能够帮助我们持久化数据,尤其在处理大规模数据时显得尤为重要。
在下一篇文章中,我们将通过一个简单计算器的项目来加深对上述知识的理解并应用。通过这个项目,我们将整合之前的文件操作知识,同时也将使我们的编程能力有更进一步的提升。