Multiplication results

\n");
/* Here is where the difference is */
// data = getenv("QUERY_STRING"); This is what we used to have
int length = atoi(getenv("CONTENT_LENGTH"));
int j =0;
char c;
c = getchar();
data = malloc(sizeof(char) * (length + 1) ); // create space to store the whole string
while ( c != EOF && j < length ) {
//read in one character
data[j] = c;
c = getchar();
j++;
}
//add the null character to the string
data[j] = '\0';
// Now everything is the same from here on out
printf("

Data is: \n %s " , data);
//data ends up being a string that looks something like "m=3&n=4&s=somestuff&l=someotherstuff"
// the syntax for this is "nameOfFirstField=valueInFirstField&nameOfSecondField=valueInSecondField& etc"
// so we'll use string tokenizer to split at every &.
// then we can use sscanf() to separate the part that is the name of the field from the value of the field.
if(data == NULL) {
printf("