Распарсить строку - C (СИ)
Формулировка задачи:
Помогите с задачей.
Мне нужно в строке отделить адрес страницы.
То есть, мне возвращается строка GET /page1.html HTTP/ 1.1 \n\r
И надо отделить именно page1.html
Помогите сделать это корректно.
Решение задачи: «Распарсить строку»
textual
Листинг программы
int main(int argc,char** argv) { char pText[] = "GET /page1.html HTTP/ 1.1 \n\r"; char* pBegin = strstr(pText," /"); char* pEnd = strstr(pText,".html "); if (pBegin && pEnd) { *(pEnd + 4) = 0; // Cut Here ! printf("The name is: %s",pBegin + 2); } return 0; }
Объяснение кода листинга программы
- В функции
main
определен массивpText
типаchar
с заданной строкойGET /page1.html HTTP/ 1.1 \n\r
. - Затем определены две переменные
pBegin
иpEnd
типаchar*
которые будут использоваться для поиска подстрок в массивеpText
. - Переменная
pBegin
инициализируется значениемstrstr(pText,
/)
, функцияstrstr
ищет первое вхождение подстроки/
в массивеpText
. - Переменная
pEnd
инициализируется значениемstrstr(pText,
.html)
. - Если обе переменные
pBegin
иpEnd
не равныNULL
, то выполняется следующий блок кода. - В строке
*(pEnd + 4) = 0;
происходит замена символа в массивеpText
на символ конца строки\0
. Таким образом, подстрока.html
обрезается. - В строке
printf(
The name is: %s,pBegin + 2);
выводится сообщение с форматированным выражением%s
, которое заменяется на значение переменнойpBegin + 2
, представляющее собой подстрокуpage1.html
. - В конце функции
main
возвращается значение0
, что означает успешный конец работы программы.