📅  最后修改于: 2023-12-03 15:41:19.169000             🧑  作者: Mango
在 C 语言中,我们可以使用标准库提供的文件 I/O 函数对文件进行读取和写入。其中,对二进制文件的读写操作比较特殊,需要一些额外的注意事项。本文将介绍如何在 C 语言中编写二进制文件。
要编写二进制文件,首先需要打开一个文件。使用标准库提供的 fopen
函数可以打开一个文件,并返回指向 FILE
类型的指针。
#include <stdio.h>
int main() {
FILE *fp = fopen("file.bin", "wb");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
// ...
fclose(fp);
return 0;
}
以上代码中,fopen
函数的第一个参数是要打开的文件名称,第二个参数是打开方式。针对二进制文件,我们需要使用 "wb"
模式,其中 "w"
表示写入,而 "b"
表示二进制。
成功打开文件之后,我们可以使用 fwrite
函数向其中写入数据。fwrite
函数的原型如下:
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
其中,ptr
表示要写入的数据的首地址,size
表示每个数据块的大小(以字节为单位),count
表示要写入的数据块的数量,而 stream
则是目标文件指针。
以下是一个将数组 data
中的数据写入二进制文件的示例:
#include <stdio.h>
int main() {
FILE *fp = fopen("file.bin", "wb");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
int data[] = { 1, 2, 3, 4, 5 };
int size = sizeof(int);
int count = sizeof(data) / sizeof(int);
fwrite(data, size, count, fp);
fclose(fp);
return 0;
}
以上代码中,我们首先定义了一个名为 data
的整数数组,包含了 1 到 5 的整数。然后,我们使用 sizeof(int)
获取每个整数的大小,计算出需要写入的数据块的数量,最后使用 fwrite
函数将数据写入二进制文件。
读取二进制文件与写入类似,需要使用 "rb"
模式打开文件,并使用 fread
函数进行读取。fread
函数的原型如下:
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
其中,ptr
表示存储读入数据的内存地址,size
表示每个数据块的大小(以字节为单位),count
表示要读取的数据块的数量,而 stream
则是源文件指针。fread
函数返回值表示成功读取的数据块数量。
以下是一个读取二进制文件并输出其中的整数的示例:
#include <stdio.h>
int main() {
FILE *fp = fopen("file.bin", "rb");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
int data[5];
int size = sizeof(int);
int count = sizeof(data) / sizeof(int);
fread(data, size, count, fp);
fclose(fp);
for (int i = 0; i < count; i++) {
printf("%d ", data[i]);
}
printf("\n");
return 0;
}
以上代码中,我们首先定义了一个名为 data
的整数数组,然后使用 sizeof(int)
计算每个整数的大小,最后使用 fread
函数读取二进制文件中的数据。最后,我们使用 printf
函数输出读取出的整数。
本文介绍了在 C 语言中编写二进制文件的方法。需要注意的是,二进制文件与文本文件存在差异,需要使用 "wb"
和 "rb"
模式打开文件,并注意每个数据块的大小。