| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 359 人关注过本帖
标题:请教文件操作的问题
取消只看楼主 加入收藏
MHVLZ
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-3-22
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:1 
请教文件操作的问题
我使用fread读取文件内容,fread(a,sizeof(a),1,fp);,之后我想退回读取前的位置,就使用fseek(fp,-1*(long)(sizeof(a)),SEEK_CUR);,后来发现读取文件有问题,之后我使用ftell发现,除了第一次读取之后退回,之后所有的读取退回的操作,都无法退回原点。
比如
程序代码:
printf("%ld\n",ftell(fp));
fread(a,sizeof(a),1,fp);
printf("%ld\n",ftell(fp));
fseek(fp,-1*(long)(sizeof(a)),SEEK_CUR);
printf("%ld\n",ftell(fp));
fread(b,sizeof(b),1,fp);
printf("%ld\n",ftell(fp));
fseek(fp,-1*(long)(sizeof(b)),SEEK_CUR);
printf("%ld\n",ftell(fp));
fread(c,sizeof(c),1,fp);
printf("%ld\n",ftell(fp));
fseek(fp,-1*(long)(sizeof(c)),SEEK_CUR);

整个过程就是读取a,退回a那么大的距离,读取b,退回b那么大的距离,读取c,退回c那么大的距离,之后循环操作。
但是ftell告诉我,它却是这么操作的:
开始-位置0;
读取a-位置7;
退回-位置0;
读取b-位置9;
退回-位置1;
读取c-位置11;
退回-位置2
………………………………之后循环后,就连读取a,都无法退回原位置了,位置就是0、1、2、3、4、5………………

唔…………为什么啊,怎么弄啊?
2011-08-28 16:25
MHVLZ
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-3-22
收藏
得分:0 
我换了一个方法写的,总感觉文件内部的位置移动很乱…………
2011-08-30 14:46
快速回复:请教文件操作的问题
数据加载中...
 
   



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

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