如何在C中将多个字符串值存储到一个字符串中?

如何在C中将多个字符串值存储到一个字符串中?,c,arrays,string,gcc,C,Arrays,String,Gcc,我是C语言的新手,请原谅我的一些错误。 我想知道是否有可能在一个字符串中存储多个字符串/数组值?下面是一个例子,让你了解我正在尝试做什么 #include <stdio.h> #include <string.h> #include <stdlib.h> const char *lister[] = {"H", "E", "LL", "O"}; //forgot brackets, fixed now int main() { char *mystr

我是C语言的新手,请原谅我的一些错误。 我想知道是否有可能在一个字符串中存储多个字符串/数组值?下面是一个例子,让你了解我正在尝试做什么

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const char *lister[] = {"H", "E", "LL", "O"}; //forgot brackets, fixed now

int main()
{
    char *mystring[] = ("%s%s", lister[1], lister[2]);
    printf ("%s\n", mystring);
    return 0;
}
#包括
#包括
#包括
常量字符*列表器[]={“H”、“E”、“LL”、“O”}//忘记括号,现在修复
int main()
{
char*mystring[]=(%s%s),列表器[1],列表器[2]);
printf(“%s\n”,mystring);
返回0;
}
不确定这是否有意义,但正在寻找将字符串值存储到另一个字符串或数组中的方法。
谢谢!:)编辑:strncat修复了这个问题,如果你遇到了同样的问题,那么去了解更多,感谢computerfreaker建议strncat

缺少一对方括号:

const char *lister[] = {"H", "E", "LL", "O"};
//                ^^
//               Here
要使用格式字符串将多个字符串合并为一个字符串,可以使用
sprintf
,如下所示:

// Prepare the buffer for the output
char buf[100];
// The format string and parameters come from your code.
sprintf(buf, "%s%s", lister[1], lister[2]);

请注意,您的程序将生成第二个和第三个字符串的值,因为C数组中的初始索引是零,而不是一应为以下任一值:

const char **lister = {"H", "E", "LL", "O"};

你应该调查一下。这两个函数都将一个字符串追加(连接)到另一个字符串

strcat
将一个完整字符串追加到另一个字符串;您需要确保目标缓冲区足够大,可以容纳两个字符串以及尾随的空字符(
\0


strncat
稍微安全一些,因为您指定了要附加到第一个字符串的第二个字符串的字符数,这意味着您可以始终确保缓冲区足够大,可以容纳所需的所有内容。

您也可以使用sprintf以自己的格式将多个字符串转换为一个字符串

sprintf(destination_string, "%s----%s", source_string1,source_string2);

您可以查看
strcat
strncat
。这两个函数都将一个字符串追加(连接)到另一个字符串
strcat
将一个完整字符串追加到另一个字符串
strncat
稍微安全一点,因为您指定了要附加到第一个字符串的第二个字符串中的字符数。mystring部分不起作用-使用strcpy和strcat复制和重叠字符串。请确保首先分配缓冲区。@computerfreaker您可能应该将您的评论作为答案,以便OP可以接受它。@Mauren完成。谢谢你提醒我,否则我就不会意识到op选择了我的建议<代码>字符多字符串[]=“一\0两\0三”;printf(“%s,%s,%s\n”,多字符串,多字符串+4,多字符串+8)精彩,似乎是最短、最可读的方法。
sprintf(destination_string, "%s----%s", source_string1,source_string2);