저는 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;
}
감사!
것은 당신의 서식을 수정 할 수 있음을; 버그를 발견하는 것이 더 쉬워집니다. – Ponkadoodle