c - 检索文件指针到原始位置

标签 c

我的函数接收一个已读取到某个位置(未知字节数)的文件 (FILE* f)。在我的函数中,我还读取了一些内容,因此位置指针发生了变化,但在函数结束时我想将其保留在原来的位置,因此下一次读取将从我收到文件的位置开始。

我知道使用 fseek 我可以将指针带到我想要的任何地方,但问题是我不知道哪个是原始位置......

示例: file.txt =>“ABCDEFGHIJKLMOPQRSTUVWXYZ”

有人读取了前 3 个字符,所以我的函数接收到指向 D 的文件。我读取了 4 个字符并对它们进行了任何操作,所以现在位置将是 H,但我希望它将它带回 D。

最佳答案

正如人们在评论中告诉我的那样:

void myFunction(FILE* f) {
    long position;
    position = ftell(f);
    /*
     * Do stuff
    */
    fseek(f,position,SEEK_SET);
}

关于c - 检索文件指针到原始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33180715/

相关文章:

c - 外部并行循环中的内部顺序循环 - OMP

c - 为什么 C 中需要 volatile?

c++ - 你能通过保证多个线程不会访问同一个内存来避免锁定吗?

c - 将指向结构的指针/引用传递给函数

c - kthread_run -- 最后一条语句的目的 (__k;)

c - 删除 C 字符串的第一部分

c - Fork() 有多个 child 并等待他们全部完成

c - 当使用不同的文件描述符时,为什么结果不同? (系统编程)

c - 从文件读取到 C 中的 float** 内存块

c - 如果 vector 太大,我的程序会崩溃吗?