首页 > 解决方案 > C++ 在 char** 中获取 char* 的数量

问题描述

所以我有以下函数,它将 char* 输入按空格拆分,并将每个 char* 添加到最终返回的 char** 中。

char **split_input(char *input) {

  char **command = (char **)malloc(8 * sizeof(char *));
  const char *separator = " ";

  char *parsed;
  int index = 0;

  parsed = strtok(input, separator);
  while (parsed != NULL) {
    command[index] = parsed;
    index++;
    parsed = strtok(NULL, separator);
  }
  command[index] = NULL;

  return command;
}

我想知道是否有任何方法可以获得返回的 char** 包含的 char* 数量。

标签: c++arraysstringshellchar

解决方案


我想知道是否有任何方法可以获得char*返回的数量char**

鉴于您显示的代码,只有一种方法 - 调用者必须迭代数组计数元素,直到它到达NULL最后。

否则,调整函数以在数组指针旁边返回数组计数,或者作为可选的输出参数,或者使用 astd::pair<char**, int>struct { char**; int; }作为返回值。


推荐阅读