gpt4 book ai didi

c - 如何分配从函数返回的变量

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:24 25 4
gpt4 key购买 nike

我对 C 非常陌生,我正在尝试将从 main 之后的解码函数返回的数组分配给一个指针,以便我可以在我的程序中使用它(例如打印它)。代码可以编译,但在运行 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;
}

谢谢!

最佳答案

尝试使用 malloc 语句分配必要的字节并在您的函数中返回指向它的指针。

您可以将字符串的最大大小作为参数传递给您的函数,这样您就可以知道要分配多少字节。或者您可以使用另一种方法找到要分配的大小,例如定位值为 0 的第一个字符(以防 o C 空终止字符串)。

然后,就做:

emailNew = malloc(max_bytes);

然后,在函数之外,您可以使用“free”语句来释放您使用 malloc 分配的内存。

关于c - 如何分配从函数返回的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17393714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com