将分隔的字符串转换为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.)
类似这样的事情是怎么回事:
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)