gpt4 book ai didi

c - 在 C 中将 char append 到 char*?

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:58 25 4
gpt4 key购买 nike

我正在尝试制作一个快速函数,通过数字获取字符串中的单词/参数:

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() 或指针技巧,但每一个都存在段错误。我还看到有人说应该使用 malloc(),但我不确定我是如何在这样的循环中使用它的。

最佳答案

我不会声称理解您正在尝试做的是什么,但是您的代码有两个问题:

  • 您正在为 Return 分配一个只读字符串;该字符串将在您的二进制的数据部分,它是只读的,如果你试图修改它,你会得到一个段错误。
  • 你的 for 循环是 O(n^2),因为 strlen() 是 O(n)

有几种不同的方法可以解决“如何返回字符串”问题。例如,您可以:

  • 按照建议使用malloc()/calloc() 分配一个新字符串
  • 使用 asprintf(),它与此类似,但可以根据需要提供格式化
  • 将输出字符串(及其最大大小)作为参数传递给函数

前两个要求调用函数free() 返回值。第三个允许调用者决定如何分配字符串(堆栈或堆),但需要某种关于输出字符串所需的最小大小的契约(Contract)。

关于c - 在 C 中将 char append 到 char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11334773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com