私はCに非常に慣れていません。メインの後のデコード関数から返された配列をポインターに割り当てて、プログラムで使用できるようにしています(たとえば、印刷します)。コードはコンパイルされますが、CGI を実行すると「エラー 500」が発生します。
#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <stdlib.h>
int main(int argc, char **argv, char **envp) {
printf("Content-type: text/html\n\n");
char *decode(char *url);
char *qPtr;
char *ePtr;
char *emailClean;
if(qPtr = getenv("QUERY_STRING")) {
char Buffer[256];
char *Token;
char username[80], password[80], email[80];
strncpy(Buffer, qPtr, 255); //copy Env variable "QUERY_STRING" into qPtr pointer
Token = strtok(Buffer, "&"); //get first query
sscanf(Token, "username=%s", username); //gets value of username field input
Token = strtok(NULL, "&"); //get second query
sscanf(Token, "password=%s", password); //gets value of password field input
Token = strtok(NULL, "&"); //get third query
sscanf(Token, "email=%s", email); //gets value of email field input
ePtr = email;
//decode email
emailClean = decode(ePtr);
printf("%s\n", *emailClean);
}
else { printf("<p>Error: did not get a QUERY_STRING variable."); }
}
char *decode(char *url) {
char *emailNew;
int i = 0;
int y = 0;
char current = url[i];
while(current != '%') {
emailNew[i] = current;
y++;
current = url[i++];
}
return emailNew;
}
ありがとう!