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