欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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文件:
C语言 二进制文件读取和写入

#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;
} 

运行结果:
C语言 二进制文件读取和写入

fwrite(&pi, sizeof(double), 1, fp);
fread(&pi, sizeof(double), 1, fp);

第二参数 sizeof(double) 指定了 double型的长度,第三个参数指定了要读写的变量个数为 1个。

相关标签: C