首页 > 编程笔记

C语言ftell():定位文件中的位置指针

ftell() 是 C语言的一个标准库函数,定义在<stdio.h>头文件中。

ftell() 用于获取当前文件位置指针的值,即从文件开头到当前位置的字节数量,函数原型如下:
long ftell(FILE *stream);

参数

stream:文件指针,也就是目标文件。

返回值

如果调用成功,则函数返回从文件开头算起的字节数量;否则,函数返回−1L


【实例】以下是一个使用 C语言 ftell() 函数的示例代码,该代码打开一个文件,写入一些内容,然后使用 ftell() 确定文件位置,最后读取文件的其余部分。

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w+");

    if (file == NULL) {
        printf("Error opening file!\n");
        return 1;
    }

    fprintf(file, "Hello, World!");

    long position = ftell(file);
    if (position == -1) {
        printf("Error getting file position!\n");
        return 2;
    }

    printf("Current file position: %ld\n", position); // 输出: Current file position: 13

    // 将位置移回文件的开始
    fseek(file, 0, SEEK_SET);

    char buffer[50];
    fread(buffer, 1, position, file);
    buffer[position] = '\0';

    printf("Read from file: %s\n", buffer); // 输出: Read from file: Hello, World!

    fclose(file);
    return 0;
}
这个代码示例首先创建或打开名为"example.txt"的文件,并写入"Hello, World!"。然后使用 ftell() 确定文件位置,这应该是 13(因为"Hello, World!"有 13 个字符)。然后,代码将文件位置重置到开头,并读取刚才写入的内容。

这里使用了 ftell() 和 fseek() 的组合,允许我们确定写入的字节数,并确保可以从文件的开头读取相同的字节数。

推荐阅读