首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找出偏移光标是否在EOF与lseek()?

如何找出偏移光标是否在EOF与lseek()?
EN

Stack Overflow用户
提问于 2015-01-18 18:04:13
回答 1查看 8.4K关注 0票数 2

如何通过仅使用lseek()来确定偏移光标当前是否处于EOF状态?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-18 18:38:23

lseek返回(新)位置。如果可以接受测试结束后的文件位置,则可以使用以下方法:

代码语言:javascript
复制
off_t old_position = lseek(fd, 0, SEEK_CUR);
off_t end_position = lseek(fd, 0, SEEK_END);
if(old_position == end_position) {
    /* cursor already has been at the end */
}

现在,游标已经结束了,不管它是否已经存在;要将其设置回原来的位置,您可以在后面执行lseek(fd, old_position, SEEK_SET)

(为了简短起见,我省略了错误检查((off_t)-1的返回值),记住要将它们包含在实际代码中。)

另一种方法,尽管使用另一个函数,可以查询上面提到的当前位置,并对文件进行fstat,以查看st_size字段是否等于当前位置。

请注意,在尝试读取文件结束后,文件结束条件是为流(FILE *,而不是int文件描述符)设置的,光标位于文件末尾是不够的(也就是说,这种方法不是等同于feof(stream)的文件描述符)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28013009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档