[英]How to convert char *a[] into char **?
我正在嘗試使用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);
。
args
是一個局部變量,當您return
時將被銷毀,因此您顯然無法返回指向它的指針。 您必須考慮其他事情。
您可以動態分配args
:
char **args = malloc(sizeof(*args) * arg_num);
那么args
是正確的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.