2012-12-29 43 views
1

我試圖編寫一個簡單的代碼來讀取.PGM文件。我寫的代碼是錯誤:'Img'的存儲大小未知

#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); 
} 

它輸出錯誤:「圖」的存儲大小是不知道

任何調試建議?

+2

呀,'的是Img'不知道大小......就是這樣。不應該很難弄清楚... – netcoder

+0

我的大腦受傷了。 – BastiBen

回答

0

你需要給該數組大小:

gray *Img[100]; 

因爲它看起來像你不知道什麼大小給它,直到後來在節目中,你可能要考慮動態分配(使用malloc(3)free(3))或可能的variable-length array,如果您可以使用C99功能。

0

沒有什麼可調試的,因爲你的代碼甚至沒有編譯。它不會編譯,因爲您聲明Img爲指向gray的指針數組,但未指定大小。因此,編譯器不知道該陣列應該有多大,並抱怨。

1

documentation of libpgm,好像你要聲明一個指針到指針:

gray **Img; 
... 
Img = pgm_readpgm(fp, &col, &row, &Maxval); 
... 
pgm_freearray(Img, row); 
+0

+1 - 這個答案肯定是最正確的。這就是你閱讀文檔所獲得的結果。 =) –