Проверка символов при чтении из файла с помощью getc
В следующем коде я пытаюсь сохранить все символы из файла (включая символы новой строки). Если читается новая строка, переменная 'i' должна увеличиваться, а 'j' сбрасываться в 0, но этого не происходит. Я подтвердил, что новые строки действительно читаются и сохраняются путем печати из моего массива в консоль.
void scan_solved_nonogram(board *b) {
FILE *file = fopen("test.txt", "r");
int i = 0, j = 0;
while( ( b->symbol[i][j] = getc(file) ) != EOF ) {
j++;
if( b->symbol[i][j] == '\n' ) {
i++;
j = 0;
}
}
fclose(file);
b->size_i = i;
b->size_j = j;
}
1 ответ
Проблема в том, что вы увеличиваете j, прежде чем проверять наличие символа новой строки.
while( ( b->symbol[i][j] = getc(file) ) != EOF ) {
j++;// you increment j, so you need to check for newline at j-1
if( b->symbol[i][j-1] == '\n' ) {
i++;
j = 0;
}
}