Cần giúp đỡ về hàm malloc trong C

Em viết chương trình để đọc 1 ma trận từ 1 file cho sẵn, tuy nhiên nó lại báo lỗi segmentation fault, và em cũng ko biết cách nào sửa lỗi này dù đã thử đủ kiểu, sau đây là đoạn code mà em viết:

    Matrix *readm(FILE *p)
    {
        Matrix *m;
        m = (Matrix *) malloc(sizeof(Matrix));
        fscanf(p,"%d %d",&(m->row),&(m->column));
        m->matrix = malloc(sizeof(int *)*m->row);
        int i,j,c;
        for(i=0;i<m->column;i++)
            m->matrix[i] = malloc(sizeof(int)*m->column);
        for(i=0;i<m->row;i++)
            for(j=0;j<m->column;j++)
            {
                fscanf(p,"%d",&c);
                m->matrix[i][j]=c;
            }
        return m;
    }

Em thử với 1 số test file khác nhau thì lúc chạy được, lúc không chạy được, ai đó có thể giải thích tại sao được ko ạ?


đọc cái này trước khi post code nhé!

1 Like

malloc đầu là sizeof(int*)
fscanf(file,"%d%d",…) vì có dấu ’ ’ có thể bị đọc sai kích thước ma trận

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?