Как настроить массивы для разбора строк - PullRequest
0 голосов
/ 15 марта 2012

Я немного озадачен тем, как C читает файл.Если я использую fscanf, чтобы прочитать файл (с несколькими строками) и поместить его в массив [0].Могу ли я использовать оператор if, чтобы проверить наличие символа \n, а затем позволить ему продолжить чтение второй строки в массив [1]?или это будет повторяться, чтобы прочитать с начала файла?

Ответы [ 2 ]

1 голос
/ 15 марта 2012

Подобные функции всегда будут считываться с вашей текущей позиции (вы можете получить это, например, с помощью ftell()). После прочтения текущая позиция всегда обновляется / перемещается (за исключением нескольких функций, утверждающих обратное). Чтобы изменить позицию самостоятельно, вы можете использовать fseek(). Примечание: Вы не должны использовать fscanf(), поскольку результаты могут быть непредсказуемыми, если формат ввода не соответствует ожидаемому.

0 голосов
/ 15 марта 2012

Во-первых, это умеренно тяжелая работа, чтобы заставить scanf() читать целые строки. Тебе лучше использовать fgets() для работы. Вы также должны убедиться, что у вас достаточно памяти для каждой строки для чтения.

Обратите внимание, что scanf("%s",...) означает чтение символов до первого пробела (грубо говоря, слово, а не строка, если строка не состоит из одного слова).

Я мог бы написать:

enum { MAX_LINES = 10, MAX_LINESIZE = 256 };
char array[MAX_LINES][MAX_LINESIZE];
int i = 0;

while (i < MAX_LINES && fgets(array[i], sizeof(array[i]), stdin) != 0)
    i++;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...