簡體   English   中英

如何將char * a []轉換為char **?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM