Итак, теперь мы можем слегка модифицировать предыдущий пример сценария, заставив его перед выводом данных декодировать их. Попробуем написать это так:
Листинг 3.6. Получение POST-данных с URL-декодированием
#include <stdio.h>
#include <stdlib.h>
void main(void) {
// ïîëó÷àåì çíà÷åíèÿ ïåðåìåííûõ îêðóæåíèÿ
char *RemoteAddr = getenv("REMOTE_ADDR");
char *ContentLength = getenv("CONTENT_LENGTH");
// âûäåëÿåì ïàìÿòü äëÿ áóôåðà QUERY_STRING
char *QueryString = malloc(strlen(getenv("QUERY_STRING")) + 1);
// êîïèðóåì QUERY_STRING â ñîçäàííûé áóôåð
strcpy(QueryString, getenv("QUERY_STRING"));
// äåêîäèðóåì QUERY_STRING
UrlDecode(QueryString);
// âû÷èñëÿåì êîëè÷åñòâî áàéòîâ äàííûõ — ïåðåâîäèì ñòðîêó â ÷èñëî
int NumBytes = atoi(ContentLength);
// âûäåëÿåì â ñâîáîäíîé ïàìÿòè áóôåð íóæíîãî ðàçìåðà