文件复制,请用C语言。用fread函数最好。

来源:百度知道 编辑:UC知道 时间:2024/06/07 04:59:28
我写了几句代码。FILE*fp;//读取文件流指针
FILE*fp2;//存的文件流指针
long*ch2=(long*)malloc(sizeof(long)*100000);//动态指针,存40W个字节,10W个long型数据。
if((fp=fopen("name1.bin","rb"))==NULL)//文件如果存在 {
printf("cant open the file");
exit(0);
}
fp2=fopen("name2.bin","a+");
if(fread(ch2,100000,1,fp)!=1)//读取
{ printf("file read error\n");
fclose(fp);
}
for(g=0;g<100000;g++)
{
if(fwrite(ch2+g,4,1,fp2)!=1)//写入
{ printf("file write error\n");
}
}
我在复制文件的时候,到第176个数据就会出错,结果就不对了,怎么回事?
读取是这个,一次性读,分次存。fread(ch2,400000,1,fp)!

a+是文本文件的读取方式,改成ab会好很多(2进制读取),fread一次最多只能读进64K的东西,fread的第2个参数要小于64K。你的40W肯定不行,建议你先把读取弄好,然后再去想存储

fread(ch2,100000,1,fp)错了吧,应该是fread(ch2,100000,4,fp)吧

估计这个是一个对你很有帮助的例子
http://zhidao.baidu.com/question/81314373.html

里面的例子很有价值