我正在尝试创建一个快速函数,它通过数字获取字符串中的单词/参数:
char* arg(char* S, int Num) {
char* Return = "";
int Spaces = 0;
int i = 0;
for (i; i<strlen(S); i++) {
if (S[i] == ' ') {
Spaces++;
}
else if (Spaces == Num) {
//Want to append S[i] to Return here.
}
else if (Spaces > Num) {
return Return;
}
}
printf("%s-\n", Return);
return Return;
}
我找不到把这些字符放入
Return
的方法。我发现很多帖子都建议使用指针或技巧,但每个帖子都有缺陷。我也看到有人说应该使用strcat()
,但我不确定我是如何在这样的循环中使用它的。 最佳答案
我不会声称理解您要做的事情,但您的代码有两个问题:
您正在将只读字符串分配给Return
;该字符串将位于
二进制的数据段,它是只读的,如果你试图修改它,你会得到一个segfault。
for循环是O(n^2),因为strlen()
是O(n)
有几种不同的方法可以解决“如何返回字符串”问题。例如,您可以:
按照建议,使用malloc()
/calloc()
分配新字符串
使用类似的asprintf()
,但如果需要,可以提供格式
将输出字符串(及其最大大小)作为参数传递给函数
前两个要求调用函数free()
返回值。第三个允许调用者决定如何分配字符串(堆栈或堆),但需要某种关于输出字符串所需最小大小的约定。
关于c - 在C中将char append 到char *?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11334773/