30/09/2018, 19:13

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 ạ?

Interns viết 21:16 ngày 30/09/2018

Làm sao để có thể hiển thị syntax highlighting bằng markdown? Các bạn phải đánh dấu ``` như ví dụ dưới đây Chú ý, dấu ``` được tạo ra bởi nút nằm bên trái số 1 trên bàn phím, nút này sẽ là ~ khi bấm giữ Shift Ví dụ cho C Nội dung: ``` void main() { } ``` Và đừng quên ``` ở cuối Kết quả void main() { } Ví dụ cho Pascal Nội dung: ``` Program HelloWorld; Begin WriteLn('Hello world!') {no ";" is required after the last statement of a block - adding one adds a "null stateme…

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

Gió viết 21:21 ngày 30/09/2018

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

Bài liên quan
0