Распарсить строку - 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;
}

Объяснение кода листинга программы

  1. В функции main определен массив pText типа char с заданной строкой GET /page1.html HTTP/ 1.1 \n\r.
  2. Затем определены две переменные pBegin и pEnd типа char* которые будут использоваться для поиска подстрок в массиве pText.
  3. Переменная pBegin инициализируется значением strstr(pText, /), функция strstr ищет первое вхождение подстроки / в массиве pText.
  4. Переменная pEnd инициализируется значением strstr(pText,.html ).
  5. Если обе переменные pBegin и pEnd не равны NULL, то выполняется следующий блок кода.
  6. В строке *(pEnd + 4) = 0; происходит замена символа в массиве pText на символ конца строки \0. Таким образом, подстрока .html обрезается.
  7. В строке printf(The name is: %s,pBegin + 2); выводится сообщение с форматированным выражением %s, которое заменяется на значение переменной pBegin + 2, представляющее собой подстроку page1.html.
  8. В конце функции main возвращается значение 0, что означает успешный конец работы программы.

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы