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];

由于看起来您直到在程序的后面才知道要给它什么大小,所以您可能想要研究动态分配(使用malloc(3)and free(3))或可能是可变长度数组,如果您可以使用 C99 功能。

于 2012-12-29T01:29:07.993 回答
0

没有什么可调试的,因为您的代码甚至无法编译。它无法编译,因为您声明Img为指针数组gray但未指定大小。因此编译器不知道数组应该有多大并抱怨。

于 2012-12-29T01:29:20.257 回答