fread和fwirte函数

✨✨ 欢迎大家来到莉莉的博文✨✨

 🎈🎈养成好习惯,先赞后看哦~🎈🎈

一、fread函数 ——>从文件流中读取二进制数据到ptr指向的数组

从流(二进制文件)中读取数据块

  • ptr:指向大小至少为 (size*count) 字节的内存块的指针,转换为 void*。
  • size:要读取的每个元素的大小(以字节为单位)
  • count:要读取的元素个数,每个元素的大小为字节
  • stream:指向指定输入流的 FILE 对象的指针。
  •  返回值:如果成功,读取的总字节数为 (size*count),返回成功读取的元素总数
    如果此数字与 count 参数不同,则表示读取时发生读取错误或到达文件末尾。在这两种情况下,可以分别使用 ferror 和 feof 进行检查。

  • 如果 size 或 count 为零,则该函数返回零,并且 ptr 指向的流状态和内容保持不变

即从中读取 count 个元素的数组,每个元素的大小为size,并将它们存储在 ptr 指定的内存块中。

#include <stdio.h>
#include <stdlib.h>
int main()
{
	FILE* pFile = NULL;
	long lSize;
	char* buffer;
	size_t result;
	pFile = fopen("myfile.bin", "rb");
	if (pFile == NULL)
	{ 
		fputs("File error", stderr); 
		exit(1); 
	}

	// obtain file size:
	fseek(pFile, 0, SEEK_END);
	lSize = ftell(pFile);
	rewind(pFile);

	// allocate memory to contain the whole file:
	buffer = (char*)malloc(sizeof(char) * lSize);
	if (buffer == NULL)
	{
		fputs("Memory error", stderr); 
		exit(2);
	}

	// copy the file into the buffer:
	result = fread(buffer, 1, lSize, pFile);
	if (result != lSize) 
	{
		fputs("Reading error", stderr); 
		exit(3); 
	}
	fclose(pFile);
	free(buffer);
	return 0;
}

二、fwrite函数 ——>将ptr指向的数组的内容写入到文件流

fwrite和fread的理解差不多,这里就不多做阐述啦!

#include <stdio.h>
int main()
{
	FILE* pFile = NULL;
	char buffer[] = { 'x' , 'y' , 'z' };
	pFile = fopen("myfile.bin", "wb");
	fwrite(buffer, sizeof(char), sizeof(buffer), pFile);
	fclose(pFile);
	return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值