2012-12-29 40 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 - 这个答案肯定是最正确的。这就是你阅读文档所获得的结果。 =) –