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