Jon*_*ono 2 c c++ parsing arguments
我似乎无法让这个工作.wordexp()
当我称之为:
wordexp("beep", &p, 0);
w = p.we_wordv;
argc = p.we_wordc;
Run Code Online (Sandbox Code Playgroud)
不过,我想在一些值,用户将进入通过,然后得到argv
和argc
从.现在我有以下代码,但我总是收到"分段错误"或"EXC_BAD_ACCESS":
char **parseCommand(char *args, int *argc) {
printf("args %s\n", args);
wordexp_t p;
char **w;
int i;
char *beep;
wordexp(args, &p, 0);
w = p.we_wordv;
argc = p.we_wordc;
wordfree(&p);
return w;
}
Run Code Online (Sandbox Code Playgroud)
当我打印args时,它会显示它.我甚至试过strcpy
args到另一个字符串.但仍然得到错误.一定是傻事(或者用wordexp不能做到这一点)?
我怀疑你的问题是
函数wordfree()再次释放分配的内存.更确切地说,它不会释放它的参数,但它释放了数组we_wordv和指向的字符串.
所以你返回一个指向free
d内存的指针,当你访问它时,分段错误并不罕见.