首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

fseek getc关于 当前指针有关问题

2012-10-23 
fseek getc关于 当前指针问题假如我在之前使用了fread函数,然后使用fseek函数将当前指针后移一个字节,然后

fseek getc关于 当前指针问题
假如我在之前使用了fread函数,然后使用fseek函数将当前指针后移一个字节,然后不用fclose,直接调用getc去读取文件,那么当前指针会在哪啊?我是菜鸟,不知道描述的有没有问题啊,大家帮忙啊,发了几个帖子了,没分了

[解决办法]
你fread返回5, 那么移动一下就是6.

要看fread的返回值,因为fread->read, 假设你fread(5),fread返回5,但实际read了可能10,FILE里还buffer了5,实际上FILE里记录的offset和当前fd的offset不同,fseek使用的是FILE里的offset,也就是5,而fd的offset是10.

这是实现方面的东西,理解了底层实现就容易理解了。
[解决办法]
楼上说的很详细了。只针对问题,在libc(标准c库)里,一般读写文件用到FILE *fp;这样的文件指针,当用户读取内容时,C库会维护一个偏移,也就是你实际读出的字节数。所以如果顺便读取的话,没有必要去用fseek的,如果没有fclose,一直往下读即可。

热点排行