C ++での学習演習として、簡単なTGA画像ファイルセーバーを作成しようとしています。コードは、ヘッダーの構造体を宣言し、fread()を使用してヘッダー全体を一度にロードするTGAローダーの例に基づいています。
私のプログラムは現在機能していません。ファイルに2バイト余分に書き込まれているようです。構造体のサイズを出力しましたが、2バイトが大きすぎます(正しい18ではなく20)。少し読んだ後、問題はデータのアライメントとパディングに関連していると思います(構造体がどのように格納されるかについてはよくわかりません)。
私の質問は、これに対する良い解決策は何ですか?fwrite()を使用して構造体全体を一度に書き込む代わりに、構造体のコンポーネントをバイトごとに書き込むことができると思います。これが、これから行うことです。ヘッダーをロードするときに機能するのであれば、それを書き込むときにも機能すると思いました。私の仮定は間違っていましたか?