gpt4 book ai didi

连接多个字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:13 24 4
gpt4 key购买 nike

我正在处理一个输入字符串,它包含一个进程名称,后跟任意数量的参数。

我需要一个字符串中的进程名称以及所有参数。我以为我可以在循环中使用 strcat,以便它循环遍历所有 args 并且每次都将 arg 附加到字符串,但是我在获取一个空字符串以开始循环时遇到了问题。

谁能帮我写一些基本的代码?

谢谢。

编辑:为了清楚起见,我发布了我的代码。 Mike 的帖子最接近我现在的帖子:

    char * temp;
strcpy(temp,"");
for (i = 4; i < argc-1; i++) // last arg is null, so we need argc-1
{
strcat(temp,argv[i]);
strcat(temp," ");
}

暂时忽略我的 for 循环中的 4(我知道是魔数(Magic Number)。)我遇到此代码的段错误。是因为我的字符串分配吗?我假设是这种情况,因此我问了如何组合字符串的问题。

最佳答案

假设您的输入字符串位于 char 指针数组中,建议称为 argv,长度为 argc

我们首先需要确定输出需要多少空间:

int length = 0;
for (int i = 0; i < argc; ++i)
length += strlen(argv[i]);

然后我们分配它,为 '\0' 终止符添加一个额外的 char:

char *output = (char*)malloc(length + 1);

最后,串联:

char *dest = output;
for (int i = 0; i < argc; ++i) {
char *src = argv[i];
while (*src)
*dest++ = *src++;
}
*dest = '\0';

请注意,我在这里没有使用 strcat。原因是这为我们设置了 Schlemiel the Painter's algorithm : 对于每次迭代,将扫描整个输出字符串以找到它的结尾,从而导致二次运行时间。

完成后不要忘记释放输出字符串:

free(output);

我有点累了,所以我可能忽略了这里的一些东西。欢迎使用标准库函数的更好解决方案。如果 strcat 返回一个指向 dest 中终止符字节的指针会很方便,但是唉。

关于连接多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5206231/

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