fread第二个参数和第三个参数互换注意点——————————函数指针定义注意

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

第一个参数:读取数据放入的首地址

第二个参数:一次读取多少个字节

第三个参数:读多少次size

第四个参数:读取文件的文件指针

返回值:返回第三个参数,如果小于第三个参数就返回实际读取的大小,如果读取的内容小于第二个参数会发生读到文件结尾(返回值为0)或者发生错误

例子:

#include<stdio.h>
int main(int argc,char *argv[])
{
	if(argc<3)
	{
		printf("src dest\n");
		return -1;
	}
	char *p1=argv[1];
	char *p2=argv[2];
	FILE *fp1=fopen(p1,"r");
	if(fp1==NULL)
	{
	return -1;
	}
	FILE *fp2=fopen(p2,"w");
	if(fp2==NULL)
	{
		return -1;
	}
	char buf[4*1024];
	int ret;
	while(1)
	{
	//ret=fread(buf,1,sizeof(buf),fp1);
	ret=fread(buf,sizeof(buf),1,fp1);//第二个参数和第三个参数互换后,如果读取的内容小于第二个参数sizeof(buf)的值,那返回值会返回0,文件算读到结尾
	printf("ret=%d\n",ret);
	if(ret==0)
	{break;}
	fwrite(buf,1,ret,fp2);
	}
	fclose(fp1);
	fclose(fp2);
	return 0;
}
运行结果:返回值为0,没有把内容写进dst2.txt文件中,



#include<stdio.h>
void(*Fun)(int);//定义函数指针,可以直接使用
typedef void(*Fun2)(int);//定义函数指针类型,必须定义一个变量

void fun(int a)
{
	printf("%d\n",a);
}
int main()
{
	Fun = fun;
	Fun(10);

	void(*Fun)(int) = fun;
	Fun(20);

	Fun2 pfun= fun;
	pfun(30);
	getchar();
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值