如何将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]
do
char**args=malloc(sizeof*args*arg\u num)是堆栈上的本地数组。当函数返回时,它将被销毁,因此您无法从函数返回它


要在函数返回后继续生存,您需要在堆上分配它。而不是
char*args[arg_num]
do
char**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)