ホームページ >バックエンド開発 >C++ >C でバイナリ ファイル全体を正しく読み書きする方法

C でバイナリ ファイル全体を正しく読み書きする方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-03 14:25:40474ブラウズ

How to Correctly Read and Write Entire Binary Files in C  ?

バイナリ ファイルの読み取りと書き込み

バイナリ ファイルをバッファに読み取り、その後そのバッファを別のファイルに書き込もうとすると、適切なアプローチを使用することが重要です。提供されたコード フラグメントでは、バッファがファイルの最初の行から数個の ASCII 文字のみをキャプチャし、その内容全体を取得できないというエラーが発生しました。

この問題を解決するには、次の 2 つの推奨アプローチがあります。

  1. C の使用アプローチ:

    C のストリーム反復機能を利用して、次のコードは入力バイナリ ファイルの内容を出力ファイルに効率的にコピーします:

    #include <fstream>
    #include <iterator>
    #include <algorithm>
    
    int main()
    {
        std::ifstream input("C:\Final.gif", std::ios::binary);
        std::ofstream output("C:\myfile.gif", std::ios::binary);
    
        std::copy(
            std::istreambuf_iterator<char>(input),
            std::istreambuf_iterator<char>(),
            std::ostreambuf_iterator<char>(output));
    }
  2. 変更のためのバッファの使用:

    データが変更のためにバッファに保存する必要がある場合は、次のアプローチを使用できます。

    #include <fstream>
    #include <iterator>
    #include <vector>
    
    int main()
    {
        std::ifstream input("C:\Final.gif", std::ios::binary);
    
        // Copies all data into buffer
        std::vector<unsigned char> buffer(std::istreambuf_iterator<char>(input), {});
    }

これらの手法を実装すると、コードはバイナリ ファイル全体をバッファに正常に読み込むことができます。または出力ファイルに直接書き込んで、正確なデータ転送と操作を保証します。

以上がC でバイナリ ファイル全体を正しく読み書きする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。