parse.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void main() {

  int i,flag,numvar;
  char *input,*cp1,*cp2,*myvar[10],*myval[10];
  char inputs[1000];

  gets(inputs);
  input=inputs;
  printf("Content-type: text/html\n\n");
  printf("<html>\n<head><title>Parsing parameters from GET method</title></head>\n");
  printf("<body bgcolor=#ffffff>\n<h1>The parameters for this CGI:</h1>\n");
  if (strlen(input)==0) 
    printf("No parameters entered!\n");
  else {
    flag=1;
    numvar=0;
    while (flag) {
      myvar[numvar]=input;
      cp1=strchr(input,'=');
      cp2=strchr(input,'&');
      if(cp2==NULL) {
        flag=0;
        cp2=input+strlen(input);
      }
      input=cp2+1;
      myval[numvar]=cp1+1;
      cp1[0]=0;
      cp2[0]=0;
      numvar++;
    }
    for (i=0;i<numvar;i++)
      printf(" variable <b> %s </b> = %s <br>\n",myvar[i],myval[i]);
  }
  printf("<hr> Thank you user from %s.<br>\n",getenv("REMOTE_ADDR"));
  printf("%s wishes you Good Luck with your CGI programming.<br>\n",getenv("SERVER_NAME"));
  printf ("</body>\n</html>\n");
}