【发布时间】:2011-09-04 13:41:24
【问题描述】:
我需要返回一个char**,但是当我尝试这样做时,编译器告诉我我想返回一个局部变量的地址。我怎样才能做到这一点?我知道我应该为这个变量分配空间但是如何?这是我的代码,但第二个 printf 没有出现,函数什么也不返回:
char** parse_cmd(const char* cmdline) {
char** arguments = (char**)malloc(100);
int i;
int j=0, k=0;
printf("%s\n", cmdline);
for(i=0; i<100; i++) {
arguments[i] = malloc(100);
}
for(i = 0; i < strlen(cmdline); i ++) {
if(cmdline[i] != ' ') {
arguments[j][k] = cmdline[i];
k++;
} else {
arguments[j][k] = '\0';
j++;
k = 0;
}
}
printf("%s\n", arguments[1]);
return arguments;
}
【问题讨论】:
-
你在哪里调用函数?
-
我在主类中调用函数
-
在 C 中转换
malloc的返回值被许多人(比如我)认为是不好的做法,原因有很多。 -
不要每次循环调用
strlen();它变得昂贵。然而,这不是这里的主要问题...... -
如果连续获得 3 个空格会怎样?你如何标记返回的参数列表的结尾?我没有看到空指针,也没有计数。
标签: c string dynamic-allocation