| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 320 人关注过本帖
标题:关于 文件位置标记 的困惑。
只看楼主 加入收藏
善ing
Rank: 2
来 自:华东师范
等 级:论坛游民
帖 子:34
专家分:19
注 册:2012-11-18
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
关于 文件位置标记 的困惑。
/*   此程序是将 file1.txt 的内容 复制到 file2.txt 中
     我的困惑是 :
       1. 文件位置标记 是什么 ,
          ps : 我原以为 fp1 就是 文件位置标记,现在发现不对。
       2. feof(fp1) 与 rewind(fp1) 都改变了 文件位置标记 么?
          搞不清楚 函数 内部 干了什么。
     麻烦 路过的朋友 帮忙解释一下 ,多谢了。
*/
程序代码:
#include<stdio.h>
int main()
{
   FILE *fp1,*fp2;
   fp1=fopen("file1.txt","r");
   fp2=fopen("file2.txt","w");
   while(!feof(fp1))
   {
       putchar(getc(fp1));
       printf("previous=%p\n",fp1);  // 输出 file1 的地址 .
   }
   putchar('\n');                   

   printf("current =%p\n",fp1);      // 再次 输出 file1 的地址 ,发现没变 .
   rewind(fp1);    //                 
    // 注意到 fp1 没变,本来想把 rewind(fp1) 这句话 去掉,
    // 发现不对 , 看来 fp1 不是 文件位置标记。

   //实现 复制 的部分 (需 重置 文件位置标记)。
   while(!feof(fp1))
   {
       putc(getc(fp1),fp2);
       //printf("%p\n",fp1);
   }
   fclose(fp1);
   fclose(fp2);
   return 0;
}


搜索更多相关主题的帖子: 朋友 
2013-01-01 21:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
fp只是文件对象的句柄。文件位置,你想象有一个“箭头”指示着在文件的哪里开始读写数据的,箭头指着的位置就是文件位置。feof()返回真时,表示箭头已经到达文件的末尾之外了;rewind()是强硬改变箭头位置的。

授人以渔,不授人以鱼。
2013-01-01 22:04
善ing
Rank: 2
来 自:华东师范
等 级:论坛游民
帖 子:34
专家分:19
注 册:2012-11-18
收藏
得分:0 
哇,感谢 T版 的详细解答。
后来,我查了一下,
怀疑 文件位置标记 可能是
结构体 *fp1 里的成员
unsigned char *curp ;
不太确定,不知大家怎么想。

邂逅c  (⊙o⊙)
2013-01-01 22:44
快速回复:关于 文件位置标记 的困惑。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034848 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved