Программа только для чтения первого ряда матрицы в C - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь прочитать в матрице 3x3 из файла. Файл содержит данные, которые выглядят следующим образом.

5 65 3
3 11 15
22 8 3

Пока у меня есть следующий код,

int data[3][3];
int i = 0;
int j = 0;
FILE *fptr = fopen("data.txt", "r");

for(; i < 3; ++i){
    fscanf(fptr, "%d %d %d", &(data[i][0]), &(data[i][1]), &(data[i][2]));
}
i = 0;

for(; i < 3; ++i){
    for(; j < 3; ++j){
        printf("%d ", data[i][j]);
    }
    printf("\n");
}

fclose(fptr);

Однако из файла читается только первая строка матрицы. При попытке печати отображается только первая строка, за которой следуют две пустые строки.

Ответы [ 3 ]

0 голосов
/ 04 ноября 2018

Попробуйте использовать приведенные ниже строки, чтобы прочитать первую строку файла и затем сохранить число, разделив их.

fscanf(fptr,"%[^\n]", c);

Для получения более подробной информации см. Эту ссылку

0 голосов
/ 04 ноября 2018

Я думаю, вы можете решить это довольно легко. Измените эти строки и добавьте символ новой строки.

for(; i < 3; ++i){
    fscanf(fptr, "%d %d %d\n", &(data[i][0]), &(data[i][1]), &(data[i][2]));
}
0 голосов
/ 04 ноября 2018

просто напишите для циклов правильно:

for(i = 0; i < 3; ++i){
    for(j = 0; j < 3; ++j){

Иначе, в вашем случае, даже если внешний цикл в порядке, но внутренний цикл j выполняется один раз правильно, но после j==3 и не сбрасывается, он не возобновляется в течение следующих 2 внешних итераций.

2 последних цикла i работают пустыми и ничего не делают.

(и нет необходимости инициализировать i и j вне операторов for)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...