这是我的代码。
if(fseek(file,position,SEEK_SET)!=0)
{
throw std::runtime_error("can't seek to specified position");
}
我曾经假设即使
position
大于文件中的字符数,此代码也可以正常工作(即抛出错误),但事实并非如此。因此,我想知道在尝试查找超出文件范围时如何处理查找失败? 最佳答案
好吧,您始终可以在执行fseek
之前检查文件长度。
void safe_seek(FILE* f, off_t offset) {
fseek(f, 0, SEEK_END);
off_t file_length = ftell(f);
if (file_length < offset) {
// throw!
}
fseek(f, offset, SEEK_SET);
}
请注意,尽管这不是线程安全的。
关于c++ - fseek的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5028012/