$ echo x y z
如果你这样做,你会得到
argv[0] = echo
argv[1] = x
argv[2] = y
argv[3] = z
我想知道这个原理。
我想制作满足以下条件的程序。
输入:字符串(类型:
char *
)char * str = "echo x y z";
输出:字符串(类型:
char **
)
打印
argv[0] = echo
argv[1] = x
argv[2] = y
argv[3] = z
这个程序中的内存应该是动态生成的 (事先不知道字符串大小)
最佳答案
您可以使用默认容量初始化输出,然后在需要时,您可以根据需要重新分配内存
类似的东西
char** parse(char* input) {
char* str = strdup(input);
int count = 0;
int capacity = 10;
char** result = malloc(capacity * sizeof(char*));
char* tok = strtok(str," ");
while(tok != NULL){
if (count >= capacity) {
capcity = 2 * capacity; // or grow it the way as you need
result = realloc(result, capacity * sizeof(char*));
}
result[count++] = strdup(tok);
tok=strtok(NULL," ");
}
free(str);
return result;
}
一点想法,希望对你有帮助
关于c - 如何用strtok_r函数解析;比如让 argv 进入 main 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271797/