FSEEK(3F)

名前
fseek, fseeko64, ftell, ftello64 - 論理ユニットへのファイルの再位置付け

形式
integer*4 function fseek (lunit, offset, from)
integer*4 lunit
integer*4 offset
integer*8 offset (64 ビット環境の場合)
integer*4 from

integer*4 function fseeko64 (lunit, offset, from)
integer*4 lunit
integer*8 offset
integer*4 from

integer*4 function ftell (lunit)
integer*4 lunit

integer*8 function ftello64 (lunit)
integer*4 lunit

機能説明
lunit は、オープンしている論理ユニットを指していなければなりません。 offset は、 from によって指定された位置からのオフセット (バイト単位) です。 from の有効な値は次のとおりです。

0 (ファイルの先頭)
1 (現在の位置)
2 (ファイルの終端)

fseek の戻り値は、正常終了の場合は 0、 それ以外の場合はシステムエラーコードです ( perror(3F) を参照)。

関数 ftell は、指定された論理ユニットに対応するファイルの現在の位置を返します。 この値は、ファイルの先頭からのバイト数 (オフセット) です。 この値が負のときはエラーを示し、反転した値がシステムエラーコードを 表しています ( perror(3F) を参照)。

ftell から返されるオフセットの値は、 後から、ファイルの同じ場所を参照する際、 fseek で位置を設定するために使うことができます。

注意: 順編成ファイルでは、 fseek につづいて出力操作 (WRITE など) を行うと、 新しい位置に続くすべてのデータが消去され、新しいデータレコード に置き換わり、そこにファイルの終端マークがつけられます。 再書き出しは、直接アクセスファイルにのみ行うことができます。

fseeko64 と ftello64 は、それぞれ、 fseek 、 ftell と同じ機能ですが、 INTEGER*4 のデータ (2 GB) の範囲よりもずっと大きいファイル上で 使用することができます。大規模ファイルのサポートは、 Solaris 2.6 以降のオペレーティング環境に適用されます。

大規模ファイルを取り扱う場合、 ftello64 から結果を受け取る変数も INTEGER*8 と宣言する必要があります。 このような処置をとらないと、 値は切り上げられてしまいます。

注意事項
64 ビット環境で動作するように、 -xarch=v9 、 v9a のようなコンパイラオプションをつけて コンパイルした場合、 fseek に渡されるオフセット変数が、 INTEGER*8 と宣言されていなくてはなりません。

64 ビットバージョンの fseeko64 と ftello64 は、 32 ビット環境 と 64 ビット環境での互換作業を 支援するために用意されたものです。

ファイル
libfui.a

関連項目
fseek(3S)、 perror(3F)