#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 .