Cを使用して2GB以上のファイルにアクセスする必要があります。プログラムの実行中に可変バイト数がファイルから読み込まれ、次の位置の場所が保存されます。プログラムの次回の実行中に、ファイルの位置が読み取られ、その位置から始まるいくつかのバイトが読み取られます。Cで大きなファイルにアクセス
ファイルが新しいファイルにコピーされることで、ファイルが既に圧縮されていることがあります(コピーはそれを行う唯一の方法だと思います)。この方法で削除されたバイト数も保存されます。
別のファイルとの同期のために、ファイルの現在の位置を元の位置から知る必要があります。これはちょうど(current_offset + deleted_bytes)であるため、これは簡単なはずです。
fseekはファイルを2GBに制限するlong intインデックスのみを使用し、fsetposは数値ではなく、前後に変換することのできないfpos_t構造体を使用します1に。私は理想的な解決策になる、ファイルの位置決めに長いlong intインデックスを使用する方法については知らない。
私は何をしますか?
どのプラットフォームですか? 'ftello()'と 'fseeko()'はオプションです。 –
ftelloとfseekoはPOSIX.1に準拠しますが、> 2GBもファイルシステムに依存した問題です。 –