Могу ли я использовать одновременно scanf и getchar для чтения файла? - PullRequest
1 голос
/ 01 октября 2019

Я пытаюсь прочитать текстовый файл. В файле три раздела. Первая строка всегда инициализирует размер куска земли, следующие строки до '&' применяют характеристики земли, затем последние несколько строк описывают движение по земле.

Пример ввода:

4x4
(0,0)
(3,3)
&
(0,0)>(0,1)>
(0,2)>(0,3)

Пока что я получил 4x4 для хранения по мере необходимости, но после этого, как мне:

  1. продолжить со строки 2, обрабатывая строки по-другому
  2. завершить этот процесс в '&' и продолжить обработку последних строк по-другому

Мой код, который не работает:

/* process first line */
while (c != "\n") {
    scanf("%dx%d%c", &row, &col, &c);
    printf("The land is %d high and %d wide.%c", row, col, c);
}

/* process until '&' is found */
while (c = getchar() != '&') {
    printf("c=%c\n", c);
}

/* process rest of file */
while (c = getchar() != EOF) {
    /* do something else */
}

1 Ответ

0 голосов
/ 01 октября 2019

У вас есть несколько проблем.

Прежде всего, символьная константа обозначается одинарными кавычками, например:

while (c != '\n')

Во-вторых, вместо использования x в строке формата, вы можете использовать %*c, чтобы съесть все символы, например:

scanf("%d%*c%d%c", &row, &col, &c);

Вы также должны добавить дополнительные скобки, чтобы правильно проверить неравенство, например:

while ((c = getchar()) != '&')

То же самое здесь:

while ((c = getchar()) != EOF)
...