如何在C语言中连接两个字符串?

176

我该如何将两个字符串相加?

我尝试了name = "derp" + "herp";,但出现了错误:

表达式必须具有整数或枚举类型

12个回答

1
在 C 语言中,你并没有真正意义上的字符串作为一个通用的一等对象。你必须将它们作为字符数组来管理,这意味着你必须确定如何管理你的数组。一种方法是使用普通变量,例如放置在堆栈上。另一种方法是使用 malloc 动态分配它们。
一旦你解决了这个问题,你就可以将一个数组的内容复制到另一个数组中,使用 strcpystrcat 来连接两个字符串。
话虽如此,C 语言确实有“字符串字面值”的概念,它们是在编译时已知的字符串。当使用时,它们将成为一个放置在只读内存中的字符数组。然而,通过将它们写在一起,例如 "foo" "bar",你可以将两个字符串字面值连接起来,从而创建字符串字面值“foobar”。

1
使用memcpy函数。
char *str1="hello";
char *str2=" world";
char *str3;

str3=(char *) malloc (11 *sizeof(char));
memcpy(str3,str1,5);
memcpy(str3+strlen(str1),str2,6);

printf("%s + %s = %s",str1,str2,str3);
free(str3);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接