Тут все просто. Все параметры передаются единой строкой (а именно, точно такой же, какая была задана в URL после ?) в переменной QUERY_STRING. Единственная проблема — то, что все данные поступят URL-кодированными. Так что нам понадобится функция декодирования. Но это отдельная тема, пока мы не будем ее касаться.
Для того чтобы узнать значения полученных переменных в Си, нужно воспользоваться функцией getenv(). Вот пример сценария на Си, который это обеспечивает.
Листинг 3.2. Работа с переменными окружения
#include <stdio.h> // Âêëþ÷àåì ôóíêöèè ââîäà/âûâîäà
#include <stdlib.h> // Âêëþ÷àåì ôóíêöèþ getenv()
void main(void) {
// ïîëó÷àåì çíà÷åíèå ïåðåìåííîé îêðóæåíèÿ REMOTE_ADDR
char *RemoteAddr = getenv("REMOTE_ADDR");
// ... è åùå QUERY_STRING
char *QueryString = getenv("QUERY_STRING");
// ïå÷àòàåì çàãîëîâîê
printf("Content-type: text/html\n\n");
// ïå÷àòàåì äîêóìåíò
printf("<html><body>");
printf("<h1>Çäðàâñòâóéòå. Ìû çíàåì î âàñ âñå!</h1>");
printf("Âàø IP-àäðåñ: %s<br>",RemoteAddr);