誰かが "重複"する前に、私は非常に徹底的にチェックしてきましたが、質問は非常にシンプルに見えますが、クリーンな回答はまだありません。Cで大きなファイルサイズを取得
私はポータブルCコードを探しています。このファイルは、そのファイルが4GBを超えていても、ファイルのサイズを提供することができます。
通常の方法(fseek、ftell)は、ファイルが< 2GBのままであれば正常に動作します。どこでもサポートされているので、私は同等のものを見つけようとしています。
残念ながら、更新されたメソッド(fseeko、ftello)はすべてのコンパイラでサポートされていません。たとえば、MinGWはそれを逃しています(明らかにMSVC)。さらに、いくつかのコメントは、新しい返品タイプ(off_t)が必ず2GBを超えるサイズをサポートしているとは考えていません。チェックする外部パラメータに依存する可能性があります。
明白なメソッド(fseeko64、ftello64)は、MSVCではサポートされていません。 MSは、対応する_fseeki64 & _ftelli64を提供します。これはすでに悪いですが、悪化します。実行時にこれらの機能を悪くサポートしているLinuxの設定があります。たとえば、GCC 4.4を使用しているPowerPCの私のDebian Squeezeは、fseeko64を使って "filesize"メソッドを生成します。fseeko64は常に0を返します(Ubuntu64では正常です)。 MinGWは2GB以上のランダムなごみに答えているようだ。
まあ、私は移植性が懸念されている限り、ちょっと無礼です。 #if #elseを作成する必要がある場合は、最初にOS &コンパイラ固有のメソッド(たとえば、MSVCのGetFileSize()など)に直接移動しないでください。
「ポータブル」とは何ですか?ファイルを開くことさえできない多くのシステムがあります。さらに4GBを超えるサイズのファイルを開くことはできません。 –