Сохранить символы в матрице из текстового файла

#c

#c

Вопрос:

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

В принципе, после того, как я выполню задачу, она выведет это:

 X . . X
. O
  

Я не знаю, почему печатается половина этого, вот мой код:

мой tabuleiro.txt является:

 3 4
X . . X
. O . X
. . O .
  

где эти два числа представляют собой размер матрицы.

*

 int main() {
    FILE *fp;
    char matrix[100][100];
    int lines=0,columns=0,i=0,j=0,l=0,c=0;
    fp = fopen("tabuleiro.txt","r");
    fscanf(fp,"%d %d",amp;lines,amp;columns);
    for(i=1;i<=lines;i  ){
        for(j=1;j<=columns;j  ){
            fscanf(fp,"%c",amp;matrix[i][j]);
            printf("%c", matrix[i][j]);
        }
    }
    fclose(fp);
    return 0;
}
  

*

Комментарии:

1. "%c" не пропускает пробелы или символы новой строки во входном файле. Чтобы пропустить пробелы, используйте " %c" .

Ответ №1:

В приведенной выше программе пробелы между элементами массива в tabuleiro.txt не считываются. Пробел доступен только для чтения при чтении первой строки в

 fscanf(fp,"%d %d",amp;lines,amp;columns);
  

Изменение вложенных for циклов с дополнительным объявлением перед этим следующим образом:

     char whitespace;
    for(i=1;i<=lines;i  ){
        for(j=1;j<=columns;j  ){
            fscanf(fp, "%c", amp;matrix[i][j]);
            fscanf(fp, "%c", amp;whitespace);
            printf("%c", matrix[i][j]);
            printf("%c", whitespace);
        }
    }
  

выводит требуемый результат

 
X . . X
. O . X
. . O .