提问者:小点点

带有ERROR“功能未实现”的fseek endup(ENOSYS)


我有一个打开文件并在程序启动时从nvs设置pos的函数。一切都发生在很短的时间后,函数调用以错误结束,显示[Line: 670]fseek错误:函数未实现。短时间后,另一个调用起作用。

我想知道是什么导致了这个问题,因为在我使用这个特定的例子之前,我对不同的文件进行了多次fopen/foff。

        FILE *file;
        file = fopen("/spiffs/data/log.log", "rb+");
        if(file == NULL) return;
        if(fseek(file, 30, SEEK_SET) != 0) {
            fprintf(stderr, "[Line : %d] fseek ERROR : ", __LINE__);
            perror("");
        }

文件本身充满数据,长度为10kB

@编辑@Andrew Henle在评论中所说的之后,我已经研究了fseek实际上可以返回什么。我在这个链接下发现fseek没有ENOSYS作为返回。这意味着他的观点是对的,但是我在这个函数调用之前做了很多fopen/foff/fread。f*函数返回这个错误需要什么条件?


共1个答案

匿名用户

您可以发布有问题的文件吗?

我能理解的是文件正在被打开,fseek正在做它的工作

https://www.tutorialspoint.com/c_standard_library/c_function_fseek.htm

尝试查看fseek获得的值以及文件是否在30之前结束。

您可以使用fget(),但我很确定fseek是您所做工作的最佳方法。