在 C(而非 C++)中将定界字符串转换为字符串数组的有效方法是什么?例如,我可能有:
char *input = "valgrind --leak-check=yes --track-origins=yes ./a.out"
源字符串总是只有一个空格作为分隔符。我想要一个由 malloc 字符串 char *myarray[]
组成的 malloc 数组,这样:
myarray[0]=="valgrind"
myarray[1]=="--leak-check=yes"
...
编辑 我必须假设 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");
}
关于C:从分隔的源字符串创建字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2170319/