gpt4 book ai didi

c - fgetpos/fsetpos 和 ftell/fseek 之间有什么区别

转载 作者:太空狗 更新时间:2023-10-29 16:23:05 26 4
gpt4 key购买 nike

使用函数 fgetpos()fsetpos() 与使用函数 ftell()fseek 有什么区别() 获取和设置文件中的位置?

fgetpos()fsetpos() 有什么用?为什么要使用它们来代替 ftell()fseek()

最佳答案

以上答案都不正确 - 事实上,如果您将 fsetposfseek 互换使用,您可能会引入安全漏洞 (https://www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=20087255) .

原因是 fsetposfpos_t *pos 参数实际上不是一个整数,因此它不能用于查找文件中的任意位置。因此,唯一有效的值是从 fgetpos 获得的值。正如文档所说,

The internal file position indicator associated with stream is set to the position represented by pos, which is a pointer to an fpos_t object whose value shall have been previously obtained by a call to fgetpos.

( http://www.cplusplus.com/reference/cstdio/fsetpos/ )

如果你想要的只是能够搜索到超过 32 位边界的任意位置,那么使用 ftello/fseeko 并使用 #define _FILE_OFFSET_BITS 64 进行编译

关于c - fgetpos/fsetpos 和 ftell/fseek 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348637/

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