fseek関数は,キャリッジ制御やストリーム・アクセス・ファイルを含まない固定長レコード・アクセス・ファイルの場合,ファイルの位置を任意のバイト・オフセットに設定できますが,他のすべてのファイルの場合はレコード境界にのみ設定できます。
提供される標準 I/O 関数は,可変長または VFC レコード・ファイルを最初のバイト,ファイルの終端 (EOF),レコード境界のいずれかに設定します。したがって,
fseekに指定する引数は次のいずれかを指定しなければなりません。
- ファイルの先頭または終端
- 現在の位置からオフセット 0 (任意のレコード境界)
- 前の有効な
ftell呼び出しから返された位置
これらのレコード・タイプのファイルで任意の位置までシークするための移植可能な方法については,
fgetposおよび
fsetpos関数を参照してください。
| 警告
ストリーム・ファイルにアクセスするときに,ファイルの終端 (EOF) を超えてシークし,ファイルに書き込んだ場合,
fseek関数はスキップしたバイトに 0 を埋め込むことにより,ホールを作成します。
一般にレコード・ファイルに対して
fseek関数を使用する場合,
ftellに対する前の有効な呼び出しによって返された絶対位置に設定するか,あるいはファイルの先頭または終端に設定するようにしなければなりません。
fseekの呼び出しがこれらの条件を満たさない場合,結果は予測できません。
|
open,
creat,
dup,
dup2,
lseekも参照してください。