これはかなり初歩的なことであり、おそらく本当に明らかな何かが欠けているのでしょうが、これには少し困惑しています。基本的に、PPM 画像全体を赤くしようとしているとしましょう (これは実際に私が行っていることではありませんが、トラブルシューティングのためにそれを使用します)。ピクセル値を格納するために使用している構造体があります。
typedef struct pixel_type
{
unsigned char r;
unsigned char g;
unsigned char b;
} pixel_t;
その構造体を指すために使用しているポインターは「バッファー」です。
pixel_t *buffer;
また、必要なスペースの量を割り当てました (画像の幅 * 画像の高さ * ピクセル値の数 [3] )
buffer = malloc(WIDTH*HEIGHT*sizeof(pixel_t));
次に、「for」ループを使用して、バッファー ポインターをステップ実行し、すべてのピクセル値を赤に変換します。
int i;
for (i=0;i<(WIDTH*HEIGHT);i++){
buffer->r=255;
buffer->g=0;
buffer->b=0;
buffer++;} //this part appears to be the problem
ここでの問題は、出力が真っ黒な画像で、上部にゴミ ピクセルがいくつかあることです。「buffer++」も取り出してみましたが、最初のピクセルは問題なく赤に変換されているように見えます。
何が欠けているのかわかりません。ポインターを作成するとき、末尾に「++」を付けて (* デリファレンスなしで) ポインターを実行するだけで、ポインターの次のアドレスにステップスルーできることを私は知っています。それにもかかわらず、これは問題のようです。誰かが私が間違っていることを教えてもらえますか?
再度、感謝します、
オースティン