C:从分隔的源字符串创建字符串数组

yav*_*voh 5 c arrays strtok

将分隔的字符串转换为C(而不是C++)中的字符串数组的有效方法是什么?例如,我可能有:

char *input = "valgrind --leak-check=yes --track-origins=yes ./a.out"
Run Code Online (Sandbox Code Playgroud)

源字符串将始终只有一个空格作为分隔符.我想要一个malloc的malloc'ed字符串数组,char *myarray[]以便:

myarray[0]=="valgrind"
myarray[1]=="--leak-check=yes"
...
Run Code Online (Sandbox Code Playgroud)

编辑我必须假设有任意数量的令牌,inputString所以我不能把它限制在10或其他什么.

我已经尝试了一个混乱的解决方案strtok和我已经实现的链表,但valgrind抱怨太多,我放弃了.

(如果你想知道,这是我想写的基本Unix shell.)

Jac*_*ack 2

类似这样的事情是怎么回事:

char* string = "valgrind --leak-check=yes --track-origins=yes ./a.out";
char** args = (char**)malloc(MAX_ARGS*sizeof(char*));
memset(args, 0, sizeof(char*)*MAX_ARGS);

char* curToken = strtok(string, " \t");

for (int i = 0; curToken != NULL; ++i)
{
  args[i] = strdup(curToken);
  curToken = strtok(NULL, " \t");
}
Run Code Online (Sandbox Code Playgroud)