У меня есть следующая строка:C строка парсер внутри другого синтаксического анализатора
GET /index.html HTTP/1.0;;User-Agent: Wget/1.11.4;;Accept: */*;;Host: www.google.com;;Connection
Я использую следующий код для разбора каждого элемента:
while (parser != NULL){
printf ("%s\n",parser);
parser = strtok (NULL, ";;");
}
Это выходы:
GET /index.html HTTP/1.0
User-Agent: Wget/1.11.4
Accept: */*
Host: www.google.com
Connection
сейчас Мне нужно только получить веб-адрес хоста, который в этом случае - www.google.com. Поэтому сначала я хочу отделить его от других вещей.
Для этого я поставил другой анализатор в моей предыдущей, так как:
while (parser != NULL){
char * pars = strtok (string,":");
while (pars != NULL) {
printf("%s\n", pars);
pars = strtok (NULL, ":");
}
parser = strtok (NULL, ";;");
}
Выход это некоторые перепутались вещи. Я не понимаю, почему ... Может ли кто-нибудь увидеть ошибку? Спасибо
Я знал, что «strtok» столкнулся с этой проблемой: я не знал о версии повторного входа. – Floris
Обратите внимание, что 'strtok_r' не является C-стандартным (но POSIX). – Kninnug
@Kninnug Это правда. Я добавил примечание, чтобы упомянуть об этом. Спасибо! – dasblinkenlight