fseek を使用して、非常に大きな (〜 500 GB) ファイルをステップ実行しようとしています。fseek の 2 番目のパラメーターであるオフセットは long int であるため、必要なオフセットが 2^31 - 1 より大きい場合を考慮する必要があります。これが私の解決策です。
fseek(file,offset % LONG_MAX,SEEK_SET);;
for (int i = 0; i < offset/LONG_MAX; i++)
{
fseek(file,LONG_MAX,SEEK_CUR);
}
LONG_MAX は limits.h で定義され、オフセットは 64 ビットの整数です。ただし、for ループ内の fseek 呼び出しでエラーが発生します。ゼロ以外の値を返し、perror は「引数が無効です」と言っています。LONG_MAX (2147483647L として定義) をオフセットとして使用できないのはなぜですか?