0

.PGM ファイルを読み取る簡単なコードを作成しようとしています。私が書いたコードは

#include "./netpbm/lib/pgm.h"
#include <stdio.h>

typedef unsigned int gray;

int main(int argc, char* argv[]){

    gray Maxval;
    gray* Img[];
    int row, col;

    FILE *fp;

    fp = fopen("barcode.PGM", "r");

    pm_proginit(0, &argv[0]);

    &Img[0] = pgm_readpgm(fp, &col, &row, &Maxval);
}

エラーを出力します:「Img」のストレージサイズが不明です

デバッグの提案はありますか?

4

3 に答える 3

1

libpgmのドキュメントから、ポインターツーポインターを宣言する必要があるようです。

gray **Img;
...
Img = pgm_readpgm(fp, &col, &row, &Maxval);
...
pgm_freearray(Img, row);
于 2012-12-29T01:34:20.273 に答える
0

その配列にサイズを指定する必要があります。

gray *Img[100];

プログラムの後半までどのサイズを指定すればよいかわからないように見えるため、C99 機能を使用できる場合は、動的割り当て ( malloc(3)andを使用free(3)) または可変長配列を調べることをお勧めします。

于 2012-12-29T01:29:07.993 に答える
0

コードはコンパイルさえされないため、デバッグする必要はありません。サイズを指定せずImgにポインターの配列として宣言しているため、コンパイルされません。grayしたがって、コンパイラは配列の大きさを認識せず、不平を言います。

于 2012-12-29T01:29:20.257 に答える