gpt4 book ai didi

c - 如何将 char *a[] 转换为 char **?

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

我在处理 char* 数组时试图返回一个 char**

有什么方法可以有效地做到这一点?

  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**,在设置和访问字符串(使用 strsep)方面,如何让它像数组一样工作。我对 char 的整个概念有点困惑**

最佳答案

args 是堆栈上的本地数组。当函数返回时,它会被销毁,因此您无法从函数中返回它。

为了从函数的返回中存活下来,你需要在堆上分配它。而不是 char *args[arg_num];char** args = malloc(sizeof *args * arg_num);

关于c - 如何将 char *a[] 转换为 char **?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33901490/

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