当前位置:  技术问答>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.

这是实现方面的东西,理解了底层实现就容易理解了。

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

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用popen,不能使用fseek了?Segmentation fault错误
  • 关于fseek函数的疑问
  • 如何实现这个关于fseek函数的程序


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3