Ошибка сегментации (ядро сброшено) при чтении файла - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу написать программу на C, которая может читать этот файл, содержащий матрицу 3x3

 1 2 3 
 4 5 6
 2 8 7

, но я получаю: Ошибка сегментации (ядро сброшено)

#include <stdio.h>

int main (int argc, char *argv[]){

    FILE *fp;
    int i, j;
    int mat[2][2];

    if (argc != 1) {
        if((fp = fopen(*++argv, "r")) == NULL) {
            printf("I can't open file %s\n", *argv);
            return 1;
        }
    }

    for(i=0,j=0; i < 3; i++, j++)
        fscanf(fp, "%d", &mat[i][j]);

    printf("%d",mat[2][2]);

    fclose(fp);
    return 0;
}

1 Ответ

4 голосов
/ 12 апреля 2019

Две проблемы.

  1. Первая проблема.

    int mat[2][2];
    

    Есть 2*2 матрица с индексами [0,1]. Вам нужно.

    int mat[3][3];
    
  2. На данный момент вы читаете первые 3 числа в диагональные позиции.
    Что вам нужно, это

    for(i=0; i < 3; i++)
        for(j=0; j < 3; j++)
            fscanf(fp, "%d", &mat[i][j]);
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...