我是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!
答案 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)
您应该查看strcat
或strncat
。两个函数都将一个字符串追加(conCATenate)到另一个字符串。
strcat
将一整个字符串附加到另一个字符串;您需要确保目标缓冲区足以容纳两个字符串以及尾随空字符(\0
)。
strncat
稍微安全一些,因为您指定第二个字符串中的字符数要附加到第一个字符串,这意味着您始终可以确保您的缓冲区足以容纳您需要的所有内容。
答案 3 :(得分:1)
您也可以使用sprintf将多个字符串复制到一个字符串,并使用您自己的格式。
sprintf(destination_string, "%s----%s", source_string1,source_string2);