如何将char*a[]转换为char**?
我试图在处理字符数组时返回字符*** 我有什么办法可以有效地做到这一点吗如何将char*a[]转换为char**?,c,arrays,pointers,double-pointer,C,Arrays,Pointers,Double Pointer,我试图在处理字符数组时返回字符*** 我有什么办法可以有效地做到这一点吗 char *pos; if ((pos=strchr(line, '\n')) != 0) *pos = '\0'; //parses command in input (max of (arg_num - 2) flags) int arg_num = count_tokens( line, delim); char *args[arg_num]; // = malloc( sizeo
char *pos;
if ((pos=strchr(line, '\n')) != 0)
*pos = '\0';
//parses command in input (max of (arg_num - 2) flags)
int arg_num = count_tokens( line, delim);
char *args[arg_num]; // = malloc( sizeof(char) * strlen(line)); //[ delim_count + 2 ]; //plus the last seat for NULL
//puts cmd && flags in args
int i = 0;
for(; i < arg_num; i++)
//strcpy(args[i], strsep( &line, " "));
args[i] = strsep( &line, " ");
char** a = args;
return a;
char*pos;
如果((pos=strchr(行“\n”)!=0)
*pos='\0';
//解析输入中的命令(最多(arg_num-2)个标志)
int arg_num=计数令牌(行,delim);
char*args[arg_num];/=malloc(sizeof(char)*strlen(line))//[delim_计数+2]//加上最后一个空座位
//将cmd&&flags放入参数中
int i=0;
对于(;i
编辑:如果我使用char**,我如何让它在设置和访问字符串方面像数组一样工作(使用strep)。我对char**
args
是堆栈上的本地数组的整个概念有点困惑。当函数返回时,它将被销毁,因此您无法从函数返回它
要在函数返回后继续生存,您需要在堆上分配它。而不是
char*args[arg_num]
dochar**args=malloc(sizeof*args*arg\u num)代码>是堆栈上的本地数组。当函数返回时,它将被销毁,因此您无法从函数返回它
要在函数返回后继续生存,您需要在堆上分配它。而不是char*args[arg_num]
dochar**args=malloc(sizeof*args*arg\u num)
args
是一个局部变量,当您返回时将被销毁,因此您显然无法返回指向它的指针。你得想点别的
您可以动态分配args
:
char **args = malloc(sizeof(*args) * arg_num);
然后,args
是正确的开始类型。args
是一个局部变量,在返回时将被销毁,因此显然无法返回指向它的指针。你得想点别的
您可以动态分配args
:
char **args = malloc(sizeof(*args) * arg_num);
然后,args
是正确的开始类型。请记住,args
是一个局部变量,当返回时将被销毁。所以你最终还是会返回一个悬空指针。但是如果我尝试malloc,我会得到一个变量初始化错误。我能做什么?那是什么?可以粘贴准确的错误消息吗?malloc
返回一个指向已分配内存的指针,但您正试图使用该指针初始化数组。这两种类型根本不兼容。首先:您知道char*a[b]
和char**a
的实际含义吗?请记住args
是一个局部变量,当返回时将被销毁。所以你最终还是会返回一个悬空指针。但是如果我尝试malloc,我会得到一个变量初始化错误。我能做什么?那是什么?可以粘贴准确的错误消息吗?malloc
返回一个指向已分配内存的指针,但您正试图使用该指针初始化数组。这两种类型根本不兼容。首先:你知道char*a[b]
和char**a
实际上是什么意思吗?谢谢。我仍然收到错误,但是我还编辑了malloc调用,使其仅malloc(sizeof(char*)*arg_num)代码>谢谢。我仍然收到错误,但是我还编辑了malloc调用,使其仅malloc(sizeof(char*)*arg_num)代码>