Интерполяция строки C - PullRequest
       1

Интерполяция строки C

5 голосов
/ 08 августа 2010

Я создаю простую проверку статуса http в C. Я выполнил сетевую часть, но у меня возникли проблемы с манипулированием строками. Вот как это работает:

$ ./client http://domain.com/path.html#anchor
200

Эта утилита просто выводит состояние данной страницы в командной строке. Мне нужно разобрать данную строку в имя хоста и путь запроса. Я также построил строку шаблона с этим определением:

#define HTTP_GET_MSG "GET %s HTTP/1.1\nUser-Agent: my-agent-0.01\nHost: %s\n\n"

Я хотел бы знать, как мне подойти к интерполяции проанализированного URL (хоста и пути) в эту определенную строку, прежде чем send() вставить ее в сокет?

1 Ответ

7 голосов
/ 08 августа 2010

Простой подход - использовать sprintf:

char req[ SOME_SUITABLE_SIZE ];
sprintf( req, HTTP_GET_MSG, host, path );

но это будет уязвимо для переполнения буфера, если вы заранее не проверите длины "host" и "path" Если ваша система имеет snprintf , вы можете избежать этого:

snprintf( req, SOME_SUITABLE_SIZE, HTTP_GET_MSG, host, path );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...