如何合并两个字符数组而不会出现此错误?

时间:2019-05-05 15:35:41

标签: c++ arrays character strcat

我正在学习如何组合两个数组,并编写了简单的代码来理解它。我不断收到错误消息“必须使用大括号括起来的初始化程序初始化数组”,这是什么意思,我该如何解决?

char a[20] ="hello";

char b[20] = "there";

char c[40] = strcat(a, b);



int main()

{

     printf("%s", c);

}

2 个答案:

答案 0 :(得分:3)

  

char c [40] = strcat(a,b);

无效,因为您尝试为数组分配一个指针

如果您真的要使用数组:

#include <stdio.h>
#include <string.h>

char a[20] ="hello";

char b[20] = "there";

int main()

{
     char c[40];

     strcpy(c, a);
     strcat(c, b);

     puts(c);
}

或者只是

#include <stdio.h>
#include <string.h>

char a[20] ="hello";

char b[20] = "there";

int main()

{
     strcat(a, b);

     puts(a);
}

编译和执行:

pi@raspberrypi:/tmp $ g++ -pedantic -Wextra -Wall c.cc
pi@raspberrypi:/tmp $ ./a.out
hellothere
pi@raspberrypi:/tmp $ 

但这是C代码,并且您使用了C ++标记, strcpy strcat 假定接收者有足够的空间,如果这是false,则行为不确定。使用 std :: string 可以避免这些问题,甚至更多

答案 1 :(得分:2)

在C ++中,您也可以使用字符串来实现。

#include <string>
#include <iostream>

// ...

std::string a = "hello";
std::string b = "world";
std::string c = a + b;
std::cout << c << std::endl;