我正在尝试编写一个简单的代码来读取.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'的存储大小未知
任何调试建议?
答案 0 :(得分:1)
从documentation of libpgm开始,你似乎应该声明一个指向指针的指针:
gray **Img;
...
Img = pgm_readpgm(fp, &col, &row, &Maxval);
...
pgm_freearray(Img, row);
答案 1 :(得分:0)
您需要为该数组提供一个大小:
gray *Img[100];
由于您似乎不知道要在程序中稍后提供的大小,您可能希望查看动态分配(使用malloc(3)
和free(3)
)或可能{{{ 3}},如果你可以使用C99功能。
答案 2 :(得分:0)
没有什么可以调试的,因为你的代码甚至都没有编译。它不会编译,因为您将Img
声明为gray
的指针数组,但没有指定大小。因此编译器不知道数组应该有多大并且抱怨。