При разборе тегов, как в HTML/XML, я хочу инициализировать strtok для '<', но иногда мне нужно обрабатывать только необработанный текст
Моя проблема
char *text, *tag = "foobar";
if (tokenizedStr[0] == "<")
tag = strtok((tokenizedStr), ">");
Иногда разрешается, чтобы токенизированная строка не начиналась с тега. Учитывая, что следующая строка
do {
это начало массивного цикла сравнения, заканчивающегося while (tag = strtok(NULL, ">"));
я хотел бы знать, есть ли способ прокормить strtok
базовая строка, не проходя мимо символов? Я реализую элементарное форматирование и перенос строк, вот и все.
Спасибо
1 ответ
Решение
Если я правильно понимаю вашу проблему: нет, это невозможно с strtok
, Вам нужны значительно более мощные инструменты: lex
а также yacc
и правильно определенная формальная грамматика для всего, что вы пытаетесь проанализировать. Это заменит не только ваше использование strtok
но большую часть "массивной петли сравнения" вы не показали.