想问下文件的复制问题
#include<stdio.h>
char buffer;
int main(void)
{
FILE *fp,*fp2;
unsigned int bfsz = 37278;
unsigned int i = 0;
if((fp=fopen("e:\\BookKeyWord.txt","rb"))==NULL)//打开用于读取的文件
exit(1);
if((fp2=fopen("e:\\MyRecord.txt","wb"))==NULL)//打开用于写入的文件
exit(1);
while(bfsz>0)
{
if(fread(buffer,bfsz,1,fp)==1)
{
//成功读入则写入
fwrite(buffer,bfsz,1,fp2);
i += bfsz; //用i记录已读入字节
}
else
{
fseek(fp,i,0); //指向已读入的字节之后
bfsz /= 2; //将读入字节数减半
}
}
fclose(fp);
fclose(fp2);
return 0;
}
为什么我把fseek(fp,i,0); 这句去掉,就不能正常复制呢?
如果fread()能正常读取不是 fp 指针已经指向了读取了的字节之后了吗? 知道了原来一次读入,如果读入的字节数已经超过它的最大字节数,那文件指针,就一直都是指向了最后,怪不得.... char buffer;
好家伙,一上来就是一个这么大的数组。
页:
[1]