Разбор файлов в C - PullRequest
       39

Разбор файлов в C

0 голосов
/ 16 декабря 2018

У меня есть файл, и я хочу прочитать содержимое этого файла построчно с fgets().В этом файле 10 строк.Каждая строка должна содержать среди прочего либо слово «день» (встречается 5 раз в файле), либо слово «ночь» (встречается 5 раз в файле) (оба в нижнем регистре).

Каждая строка также можетсостоят из пробелов до или после слова «день» или «ночь», а также должны содержать число (3, 11) или одну из строчных букв (a,b,c) в строке.

Например:

day 3
 night     11
night a
night   b
day 11
   night    c
night 3
 day    a
day     c
day b

Моя идея состоит в том, чтобы сначала проверять каждую строку перед \n с помощью strcmp(), если происходит "день" или "ночь".Если это так, то я хочу знать, существует ли (3, 11) или (a,b,c) для этого "дня" или "ночи".Здесь мои мысли следующие: Что делать, если я удаляю все пробелы в каждой строке и определяю число или букву, за которыми следует «день» или «ночь».Проблема в том, что я застрял здесь, и я не знаю, как лучше всего это определить.Все мои мысли способ неудобно реализовать.

1 Ответ

0 голосов
/ 16 декабря 2018

Используйте буфер fgets() в качестве входных данных для sscanf() и дайте функции выполнить пробелы для вас

char w1[10], w2[10];
fgets(buf, sizeof buf, handle);
if (sscanf(buf, "%9s%9s", w1, w2) != 2) /* error */;
// w1 is "day" or "night"
// w2 is "a", "b", ... or "11", "3", ...
...