gpt4 book ai didi

c - 从函数 : Error 返回字符串指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:13 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
char** parser(char *message)
{
char a[9][256];
char* tmp =message;
bool inQuote=0;
int counter=0;
int counter2=0;
while(*tmp!='\0')
{
switch(*tmp)
{
case ',': if(!inQuote)
{
a[counter][counter2]='\0';
printf("A[%d]: %s\n",counter,a[counter]);
counter++;
counter2=0;
}

break;
case '"':
inQuote=!inQuote;
break;
default:
a[counter][counter2]=*tmp;
counter2++;
break;
}
tmp++;

}
a[counter][counter2]='\0';
printf("A[%d]: %s\n",counter,a[counter]);
return(a);

}
int main()
{
char **a = parser("N,8545,01/02/2011 09:15:01.815,\"RASTA OPTSTK 24FEB2011 1,150.00 CE\",S,8.80,250,0.00,0");
return 0;
}

给出的错误在第 38 行:从不兼容的指针类型返回函数返回局部变量的地址

编辑 有人可以相应地修改代码,以便我可以(通过指针)从 main() 访问“a”的内容;

最佳答案

错误不言自明

Line 38 : return from incompatible pointer type

a 已被定义为 char a[9][256]。因此,在语句 return(a); 中,返回值的类型是 char (*)[256](指向 256 个字符的数组的指针)而不是char **(根据 parser() 的原型(prototype))

function returns address of local variable

嗯,a 是函数的局部变量。你不应该返回局部变量的地址(除非它的内存是动态分配的或者它是一个静态变量)

关于c - 从函数 : Error 返回字符串指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5015972/

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