読者です 読者をやめる 読者になる 読者になる

ftell

ftellは指定されたファイルの現在のアクセス位置を取得するC標準ライブラリ関数・・・。

Man page of FSEEK

の2番目がftell・・・。
引数はファイルポインタだけ・・・。
戻り値に、先頭からのアクセス位置がlongの値で返ってくる・・・。

fseekの頁ではprof.binからageだけ取り出したが、ここでは、prof.binからname、age、addressをそれぞれ取り出しながら、その時のアクセス位置も出力する・・・。

構造体変数は作らず、個別にname、age、addressを宣言する・・・。
positionが今回取得するアクセス位置・・・。

prof.binをバイナリ読み込みで開く・・・。

この時点でのファイルアクセス位置をftellで取得し、printfで出力・・・。

最初はname(長さ32)なので、sizeof(char) * 32 = 1 * 32 = 32バイト分読み込む・・・。

この時点での位置をまた出力・・・。

実行すると、ここまでで、

$ ./ftell
position: 0
name: Taro
position: 32

こうなる・・・。
でこのあとも、

ageを読み込み、

位置を出力、

この時点で、

age: 20
position: 36

ageは4バイトだから4バイト先に行って、
で最後はaddressを読み込み、

位置を出力、

ここは、

address: Tokyo
position: 164

となり、ファイルの最後まできた・・・。

Sample/ftell.c at master · bg1bgst333/Sample · GitHub