august 发表于 2008-11-30 15:53:42

想问下文件的复制问题


#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 指针已经指向了读取了的字节之后了吗?

august 发表于 2008-11-30 16:25:08

知道了原来一次读入,如果读入的字节数已经超过它的最大字节数,那文件指针,就一直都是指向了最后,怪不得....

shawind 发表于 2008-11-30 17:01:38

char buffer;
好家伙,一上来就是一个这么大的数组。
页: [1]
查看完整版本: 想问下文件的复制问题