gpt4 book ai didi

c 将字符串传递给函数然后返回字符串

转载 作者:行者123 更新时间:2023-11-30 16:03:30 25 4
gpt4 key购买 nike

在探索互联网后,我编写了以下脚本,但仍然出现错误,有人知道错误是什么吗?(​​带有//err 的行)

typedef struct name_value_set {
char name[250];
char value[250];
} nv_set;

char * getInput2(char *param) {
char *my_data=0;
int data_len;
char *tmp_ptr, *tmp;
int i;
nv_set *nv;

data_len=atoi(getenv("CONTENT_LENGTH"));
char field[data_len];

my_data=(char*)malloc(sizeof(char)*(data_len+1));
fread(my_data,1,data_len,stdin);

i=0;
while (my_data[0]!='\0') {
tmp=split(my_data,'='); // err
makespace(tmp);
tmp=convert(tmp); // err
strcpy(nv[i].name,tmp); //
tmp=split(my_data,'&'); //err
makespace(tmp); //
tmp=convert(tmp); // err
strcpy(nv[i].value,tmp); //
i++;
}
i--; //

int j=0;
for (j=0; j<i; j++) {
if(nv[j].name == param) {
return nv[j].value;
}


}


void makespace(char *s)
{
int i,len;
len=strlen(s);

for (i=0;i<len;i++) {
if (s[i]=='+')
s[i]=' ';
}
}

char *split(char *s, char stop)
{
char *data;
char *tmp;
int i,len,j;

len=strlen(s);
tmp=s;
data=(char*)malloc(sizeof(char)*(len+1));

for (i=0;i<len;i++) {
if (s[i]!=stop)
data[i]=s[i]; //
else {
i+=1; //
break;
}
}
data[i]='\0';
for (j=i;j<len;j++)
s[j-i]=tmp[j];
s[len-i]='\0';
return data;
}


char *convert(char *s)
{
int x,y,len;
char *data;

len=strlen(s);
data=(char*)malloc(sizeof(char)*(len+1));
y=0;
for (x=0;x<len;x++) {
if (s[x]!='%') {
data[y]=s[x]; //
y++;
}
else {

data[y]=(char)(16*hexa(s[x+1])+hexa(s[x+2]));
y++;
x=x+2;
}
}
data[y]='\0';
return data;
}


int hexa(char c)
{
switch(c) {
case '0':return 0;
case '1':return 1;
case '2':return 2;
case '3':return 3;
case '4':return 4;
case '5':return 5;
case '6':return 6;
case '7':return 7;
case '8':return 8;
case '9':return 9;
case 'A':return 10;
case 'B':return 11;
case 'C':return 12;
case 'D':return 13;
case 'E':return 14;
case 'F':return 15;
}
return 0;
}

最佳答案

尝试在代码开头添加函数“makespace”、“split”、“convert”和“hexa”的原型(prototype);我希望您看到的是隐式声明的函数与函数定义冲突的结果。另外,为了确定一下,您在源文件中包含了 stdio.h 和 string.h,对吗?

关于c 将字符串传递给函数然后返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4066873/

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