幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2619|回复: 2

[通用编程] 想问下文件的复制问题

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2008-11-30 15:53:42 | 显示全部楼层 |阅读模式
  1. #include<stdio.h>
  2. char buffer[37278];
  3. int main(void)
  4. {
  5.     FILE *fp,*fp2;
  6.    
  7.     unsigned int bfsz = 37278;
  8.     unsigned int i = 0;
  9.     if((fp=fopen("e:\\BookKeyWord.txt","rb"))==NULL)//打开用于读取的文件
  10.         exit(1);
  11.     if((fp2=fopen("e:\\MyRecord.txt","wb"))==NULL)//打开用于写入的文件
  12.         exit(1);
  13.     while(bfsz>0)
  14.     {
  15.         if(fread(buffer,bfsz,1,fp)==1)
  16.         {
  17.             //成功读入则写入
  18.             fwrite(buffer,bfsz,1,fp2);
  19.             i += bfsz; //用i记录已读入字节
  20.         }
  21.         else
  22.         {
  23.             fseek(fp,i,0); //指向已读入的字节之后
  24.             bfsz /= 2;   //将读入字节数减半
  25.         }
  26.     }
  27.     fclose(fp);
  28.     fclose(fp2);
  29.     return 0;
  30. }
复制代码
为什么我把fseek(fp,i,0); 这句去掉,就不能正常复制呢?
如果fread()能正常读取不是 fp 指针已经指向了读取了的字节之后了吗?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2008-11-30 16:25:08 | 显示全部楼层
知道了原来一次读入,如果读入的字节数已经超过它的最大字节数,那文件指针,就一直都是指向了最后,怪不得....
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2008-11-30 17:01:38 | 显示全部楼层
char buffer[37278];
好家伙,一上来就是一个这么大的数组。
え~え~お!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-11-1 06:49 , Processed in 0.023326 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表