C语言 二进制文件读取和写入

2022-08-06,,,

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个。

本文地址:https://blog.csdn.net/qq_44989881/article/details/107300840

《C语言 二进制文件读取和写入.doc》

下载本文的Word格式文档,以方便收藏与打印。