C言語でファイルポインタの位置を取得する方法は何ですか?

C言語では、ファイルポインタの位置を取得するために、ftell関数を使用できます。ftell関数のプロトタイプは以下の通りです:

long int ftell(FILE* stream);

streamは、すでに開かれたファイルを指すポインタです。

ftell関数を呼び出すと、現在のファイルポインタの位置、つまりバイト単位のオフセットが返されます。成功した場合、返り値は非負数であり、エラーが発生した場合は-1が返されます。

以下はコードのサンプルです。

#include <stdio.h>

int main() {
    FILE* fp = fopen("example.txt", "r");
    if (fp == NULL) {
        printf("Failed to open the file.\n");
        return 1;
    }

    // 获取文件指针的位置
    long int position = ftell(fp);
    if (position == -1) {
        printf("Failed to get the position of the file pointer.\n");
        return 1;
    }
    printf("The position of the file pointer is %ld.\n", position);

    fclose(fp);
    return 0;
}

この例では、まず、example.txtという名前のファイルを開き、ポインタfpに割り当てました。そして、ftell関数を呼び出してファイルポインタの位置を取得し、その返り値を変数positionに格納しました。最後に、ファイルポインタの位置をプリントしました。

ftell関数を呼び出す前に、ファイルが正常にオープンされていて、ファイルポインタが有効であることを確認する必要があります。ファイルポインタが無効な場合、ftell関数の動作は未定義です。

bannerAds