私はC言語を学習しており、私の割り当ては24ビットビットマップのサイズを変更することです。私がこれまで行ってきた:ビットマップとMallocを使用したセグメンテーションフォルト
-Correctly書かれたコードをコピーをし、ヘッダーに画像をリサイズし
-Correctly書かれたコードを更新し、垂直
-Paddingは、私が今持っているしたい
作品私の問題がある
// save scanline
FILE* scanline = malloc(sizeof(bi.biWidth) * sizeof(RGBTRIPLE));
// iterate over infile's scanlines
for (int i = 0, biHeight = (abs(bi.biHeight)/f); i < biHeight; i++)
{
// iterate over pixels in scanline
for (int j = 0; j < (bi.biWidth/f); j++)
{
// temporary storage
RGBTRIPLE triple;
// read RGB triple from infile
fread(&triple, sizeof(RGBTRIPLE), 1, inptr);
for(int z = 0; z < f; z++)
{
// write RGB triple to outfile
fwrite(&triple, sizeof(RGBTRIPLE), 1, scanline);
}
}
// Add Padding to Outfile
for (int k = 0; k < padding2; k++)
{
fputc(0x00, scanline);
}
// skip over padding, if any
fseek(inptr, padding, SEEK_CUR);
for(int s = 0; s < f; s++)
{
// write RGB triple to outfile
fwrite(scanline, sizeof(RGBTRIPLE), 1, outptr);
}
}
を(これはだった:私はそうのように、OUTFILEに時間fは彼を書くことができますので、それが仲介にリサイズラインを書きますデバッグツールを使って計算しました)、スキャンラインファイルに書き込む必要があるときはいつでも、私はすぐにセグメンテーションフォルトを取得します。 あまり前もってありがとうございました。コミュニティのガイドラインを破っていないことを確認しようとしましたが、失敗した場合は謝罪します。良いものを持っている!
偉大な、私はそれだと思う!あなたが気にしないなら、私は迅速なフォローアップしか持っていません。私は今のようにその行を試しています: FILE * scanline = fopen(scanline、 "w"); –
偉大な、私はそれだと思う!あなたが気にしないなら、私は迅速なフォローアップしか持っていません。私は今、そのような行をしようとしています:FILE * scanline = fopen(scanline、 "w"); 、これは私にunitializedエラーを与えます。また、biはBitmapinfoheaderのショートカットで、ピクセルの長さや幅などが定義されています.RGBTRIPLEはmicrosoft bmpヘッダーで定義されているピクセルカラーで、infileとoutfileの両方がFILEです。*私はそれがscanlineの型であるべきだと思います。助けてくれてありがとう、それはとても感謝しています! –
fopenのパラメータと戻り値の型を見てください – Gerhardh