📅  最后修改于: 2023-12-03 15:29:44.222000             🧑  作者: Mango
在C语言中,有时候需要将一些数据以二进制的形式读写,这时候就需要使用二进制输入输出函数。C语言中提供了以下的二进制输入输出函数:
fread();
fwrite();
fread()
函数是C语言中二进制输入函数中使用最频繁的函数之一。下面是fread()
函数的声明:
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
参数说明:
ptr:指向数据块首地址的指针。这个指针必须是void类型的。也就是说,这个指针指向的数据可以是任意类型的。不过在程序中最好指向某个类型的数据,这样程序比较稳定。
size:要读取的每个数据项的size。
count:要读取的数据项的个数。
stream:文件指针。
返回值说明:
返回实际读取的数据项个数。
fwrite()
函数是C语言中二进制输出函数中使用最频繁的函数之一。下面是fwrite()
函数的声明:
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
参数说明:
ptr:指向数据块首地址的指针。这个指针必须是void类型的。也就是说,这个指针指向的数据可以是任意类型的。不过在程序中最好指向某个类型的数据,这样程序比较稳定。
size:要写入的每个数据项的size。
count:要写入的数据项的个数。
stream:文件指针。
返回值说明:
返回实际写入的数据项个数。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
/* 二进制读写文件 */
FILE *fp = NULL;
char buffer[20];
char wrbuffer[20] = { 'a', 'b', 'c' };
size_t result;
fp = fopen("file.bin", "wb");
if (fp == NULL) {
printf("文件打开失败\n");
exit(1);
}
result = fwrite(wrbuffer, sizeof(char), sizeof(wrbuffer), fp);
if (result != sizeof(wrbuffer)) {
printf("写入文件失败\n");
exit(1);
} else {
printf("写入文件成功\n");
}
fclose(fp);
fp = fopen("file.bin", "rb");
if (fp == NULL) {
printf("文件打开失败\n");
exit(1);
}
result = fread(buffer, sizeof(char), sizeof(wrbuffer), fp);
if (result != sizeof(wrbuffer)) {
printf("读取文件失败\n");
exit(1);
} else {
printf("读取文件成功\n");
}
fclose(fp);
return 0;
}
在这个例子中,我们打开一个二进制文件,并用fwrite()
函数向这个文件写入一些数据。接着,我们使用fread()
函数从文件中读取这些数据。