C分段故障:函数中的fscanf

时间:2018-04-28 01:58:41

标签: c function matrix malloc scanf

我正在阅读尺寸为512 * 681的.pgm文件。

我的调试器将分段错误指向fscanf(image, "%d", (*M)[i][j]);。我该如何解决?

我没有添加open_pgm等功能,因为我确定一切正常。

输入

  

12
  13个
  12个
  12个
  12个
  12个
  10个
  ...

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>


void Store(int ***M, int lines, int columns, FILE *image)
{
    for(int l = 0; l < lines; l++)
    {
        for(int c = 0; c < columns; c++)
        {
            fscanf(image, "%d", (*M)[l][c]);
        }
    }
}

int main(int argc, char *argv[])
{
    FILE *image;
    char *string;
    int lines;
    int columns;


    string = malloc(18*sizeof(char));

    open_pgm(string, argv, &image); 

    fscanf(image, "%d %d", &lines, &columns);

    int **M; 
    allocMatrix(&M, lines, columns);


    Store(&M, lines, columns, image);
    printf("%d\n", M_lida[0][0]);



    close(&imagem);
    close(&texto);  

    return 0;
}

1 个答案:

答案 0 :(得分:1)

代表

        fscanf(image, "%d", (*M)[l][c]);

尝试改为

        fscanf(image, "%d", &((*M)[l][c]));