前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fread和fwirte函数

fread和fwirte函数

作者头像
用户11328191
发布2024-10-23 14:42:25
890
发布2024-10-23 14:42:25
举报
文章被收录于专栏:li_wait

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

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

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

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

代码语言:javascript
复制
#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的理解差不多,这里就不多做阐述啦!

代码语言:javascript
复制
#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;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、fread函数 ——>从文件流中读取二进制数据到ptr指向的数组
  • 二、fwrite函数 ——>将ptr指向的数组的内容写入到文件流
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档