как объединить два символьных массива без этой ошибки? - PullRequest
0 голосов
/ 05 мая 2019

Я учусь комбинировать два массива и сделал этот простой код, чтобы понять это. Я продолжаю получать сообщение об ошибке «массив должен быть инициализирован инициализатором в скобках», что это значит и как я могу это исправить? ТНХ

char a[20] ="hello";

char b[20] = "there";

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



int main()

{

     printf("%s", c);

}

Ответы [ 2 ]

3 голосов
/ 05 мая 2019

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 , чтобы избежать этих проблем и более

2 голосов
/ 05 мая 2019

В C ++ вы также можете использовать строку для этого.

#include <string>
#include <iostream>

// ...

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