Проверка символов при чтении из файла с помощью 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;
    }
  }
Другие вопросы по тегам