arrow 若葉プログラミング塾 > 知識の玉手箱 > C関数リファレンス >
ftell()
ftell()

この関数の目的

ftell()は、ファイルの読み書き位置を取得する。

定義

	#include <stdio.h>
	long int ftell(FILE *stream);

働き

この関数は、 stream で指定されるストリームのファイル位置の指定子を取得する。 バイナリストリームでは、位置はファイルの先頭からの文字数である。 テキストストリームでは、指定子は特定の情報を持つわけではなく、 ftell() が呼ばれた時点に戻るのに fseek() で使えるだけである。 よって ftell() のこのような返り値同士を引き算しても、書き出し・読み込みされた文字数を測ることができるとは限らない。

返り値は、ftell() が成功すれば、ストリームの位置指定子である。失敗すれば、 -1L を返し、処理系定義の正の数を errno にセットする。

解説

この関数は fseek() と対にして使うことが多い。 この場合、テキストストリームであれば使い方は fgetpos() および fsetpos() とそっくり似ているものとなる。違いは、fgetpos() fsetpos() が、確保された fpos_t 型の変数を必要とするということである。 バイナリストリームであれば、文字数の計測に使うこともできる。

fseek() と一緒に使うのであれば、テキストストリームでは ftell() の返り値を SEEK_SET で指定する以外の操作は未定義であることに注意されたい。

arrow 若葉プログラミング塾 > 知識の玉手箱 > C関数リファレンス >
KC