gpt4 book ai didi

c - 如何使用 lseek() 确定偏移光标是否在 EOF?

转载 作者:太空宇宙 更新时间:2023-11-04 01:27:54 25 4
gpt4 key购买 nike

如何仅使用 lseek() 确定偏移光标当前是否位于 EOF?

最佳答案

lseek返回(新)位置。如果测试后文件位置在末尾是可以接受的,则以下工作:

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)的文件描述符)。

关于c - 如何使用 lseek() 确定偏移光标是否在 EOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28013009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com