我正在学习如何组合两个数组,并编写了简单的代码来理解它。我不断收到错误消息“必须使用大括号括起来的初始化程序初始化数组”,这是什么意思,我该如何解决?
char a[20] ="hello";
char b[20] = "there";
char c[40] = strcat(a, b);
int main()
{
printf("%s", c);
}
答案 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;