При разборе тегов, как в HTML/XML, я хочу инициализировать strtok для '<', но иногда мне нужно обрабатывать только необработанный текст

Моя проблема

char *text, *tag = "foobar";
if (tokenizedStr[0] == "<")
    tag = strtok((tokenizedStr), ">");

Иногда разрешается, чтобы токенизированная строка не начиналась с тега. Учитывая, что следующая строка

do {

это начало массивного цикла сравнения, заканчивающегося while (tag = strtok(NULL, ">")); я хотел бы знать, есть ли способ прокормить strtok базовая строка, не проходя мимо символов? Я реализую элементарное форматирование и перенос строк, вот и все.

Спасибо

1 ответ

Решение

Если я правильно понимаю вашу проблему: нет, это невозможно с strtok, Вам нужны значительно более мощные инструменты: lex а также yacc и правильно определенная формальная грамматика для всего, что вы пытаетесь проанализировать. Это заменит не только ваше использование strtok но большую часть "массивной петли сравнения" вы не показали.

Другие вопросы по тегам