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関数の動作は未定義です。