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

时间:2014-03-14 12:25:58

标签: 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 *mystring[] = ("%s%s", lister[1], lister[2]);
    printf ("%s\n", mystring);
    return 0;
}

不确定这是否有意义,但寻找将字符串值存储到另一个字符串或数组中的方法。 谢谢! :)编辑:strncat修复了这个问题,如果遇到同样的问题,请转到http://www.tutorialspoint.com/c_standard_library/c_function_strncat.htm了解更多信息,感谢computerfreaker建议使用strncat!

4 个答案:

答案 0 :(得分:3)

您缺少一对方括号:

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数组中的初始索引为零,而不是一个。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

您应该查看strcatstrncat。两个函数都将一个字符串追加(conCATenate)到另一个字符串。

strcat将一整个字符串附加到另一个字符串;您需要确保目标缓冲区足以容纳两个字符串以及尾随空字符(\0)。

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

答案 3 :(得分:1)

您也可以使用sprintf将多个字符串复制到一个字符串,并使用您自己的格式。

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