C语言 二进制文件读取和写入
程序员文章站
2022-06-12 16:28:36
...
fwrite函数
头文件 | 原型 | 说明 | 返回值 |
---|---|---|---|
#include <stdio.h> | size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); | 从ptr指向的数组中将最多nmemb个长度为size的元素写入stream指向的流中。若定义了流的文件位置指示符,则以成功写入的字符数为单位向前移动。当发生错误时,该流的文件位置指示符的值不可预测。 | 返回成功写入的元素个数。仅当发生写入错误时,元素个数会少于nmemb。 |
fread函数
头文件 | 原型 | 说明 | 返回值 |
---|---|---|---|
#include <stdio.h> | size_t fread(const void *ptr, size_t size, size_t nmemb, FILE *stream); | 从stream指向的流中最多读取nmemb个长度为size的元素到ptr指向的数组。若定义了流的文件位置指示符,则以成功读取的字符数为单位向前移动。当发生错误时,该流的文件位置指示符的值不可预测。只读取到某一元素的部分内容时,值不可预测。 | 返回成功读取的元素个数。当发生读取错误或达到文件末尾时,元素个数会少于nmemb。若size或nmemb为0,则返回0.这时数组内容和流的状态都不发生变化。 |
fwrite函数 和 fread函数
这两个函数会接收4个参数:
- 第一个参数:指向读写数据的首地址的指针。
- 第二个参数:数据的长度
- 第三个参数:数据的个数
- 第四个参数:指向读写对象的流的指针。
PI.bin文件:
#include <stdio.h>
int main(void){
FILE *fp;
double pi = 3.14159265358979323846;
printf("从变量pi得到的圆周率为%23.21f。\n", pi);
if ((fp = fopen("PI.bin", "wb")) == NULL){
printf("文件打开失败。\n");
} else {
fwrite(&pi, sizeof(double), 1, fp);
fclose(fp);
}
if ((fp = fopen("PI.bin", "rb")) == NULL){
printf("文件打开失败。\n");
} else {
fread(&pi, sizeof(double), 1, fp);
printf("从文件读取的圆周率为%23.21f。\n", pi);
fclose(fp);
}
return 0;
}
运行结果:
fwrite(&pi, sizeof(double), 1, fp);
fread(&pi, sizeof(double), 1, fp);
第二参数 sizeof(double) 指定了 double型的长度,第三个参数指定了要读写的变量个数为 1个。
上一篇: python读写入二进制文件
下一篇: 帮忙看看一下数据库连接的异常!