当前位置: 技术问答>linux和unix
fseek getc关于 当前指针问题
来源: 互联网 发布时间:2017-03-16
本文导语: 假如我在之前使用了fread函数,然后使用fseek函数将当前指针后移一个字节,然后不用fclose,直接调用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.
这是实现方面的东西,理解了底层实现就容易理解了。
要看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,一直往下读即可。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。