fread和fwrite的使用方法

Copyfile 使用C方法实现

有两个重要的函数

#include <stdio.h>
size_t fread(void *pstr, size_t size_pre, size_t nmemb, FILE *stream);
size_t fwrite(const void *pstr, size_t size_pre, size_t nmemb, FILE *stream);

返回值为读取和写入的字节数;
pstr为字符数组
size_pre为每个成员的长度,如果是char,则为1
nmberb读取和写入多少个成员

#include <windows.h>
#include <stdio.h>

#define BUF_SIZE 256

char rcv[BUF_SIZE];
size_t str_in, str_out;

int main(int argc,char* argv[])
{
	FILE *file_in, *file_out;
	if(argc != 3)
	{
		printf("使用方法:copyfile_c filename1 filename2");
		return 1;
	}

	file_in = fopen(argv[1],"rb");
	if(!file_in)
	{
		printf("%s 文件打开失败!\n",argv[1]);
		return 2;
	}

	file_out = fopen(argv[2],"wb");
	if(!file_out)
	{
		printf("%s 文件打开失败!\n",argv[2]);
		return 3;
	}

	while((str_in = fread(rcv,1,BUF_SIZE,file_in)) > 0)
	{
		str_out = fwrite(rcv,1,str_in,file_out);
		if(str_out != str_in)
		{
			printf("发生了严重错误!\n");
			return 4;
		}
	}

	fclose(file_in);
	fclose(file_out);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
freadfwrite是C语言中用于文件读写的函数。它们可以用来读写任何类型的文件,包括文本文件和二进制文件。[1]对于二进制文件的读写操作,建议使用freadfwrite函数,因为它们可以提高读写效率。[1] fread函数用于从文件中读取数据。它的参数包括要读取的数据存储的位置(缓冲区指针)、每个数据项的大小、要读取的数据项的数量以及要读取的文件指针。fread函数会从文件中读取"size*count"个字节,并将其保存到缓冲区中。[3]函数的返回值是成功读取的记录数,如果出错或读到文件末尾,返回的记录数可能小于count,甚至可能返回0。[3] fwrite函数用于向文件中写入数据。它的参数包括要写入的数据存储的位置(缓冲区指针)、每个数据项的大小、要写入的数据项的数量以及要写入的文件指针。fwrite函数会将缓冲区中的"size*count"个字节写入文件中。[3]函数的返回值是成功写入的记录数,如果出错,返回的记录数可能小于count。[3] 需要注意的是,尽管freadfwrite函数可以进行成块读写,但并不是说一次想读写多少数据就能全部读写多少数据,因为缓存有限,而且不同操作系统的缓存大小可能不一样。[2]此外,有些程序员认为函数的参数(size、count)与位置对齐有关,甚至认为语句"fwrite(ptr,1,1024,fp)"的执行效率会比"fwrite(ptr,1024,1,fp)"高,但实际情况并非如此。[2] 总结起来,freadfwrite是C语言中用于文件读写的函数,可以读写任何类型的文件。对于二进制文件的读写操作,建议使用freadfwrite函数。fread函数从文件中读取数据,fwrite函数向文件中写入数据。它们的返回值是成功读取或写入的记录数。[1][3]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值