Это можно сделать разными способами. Вот один подход который использует динамическое распределение памяти:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char* str1 = "world!";
char* str2 = "Hello, ";
char* p = malloc(strlen(str1) + strlen(str2) + 1); // Allocate memory for the new string
strcpy(p, str2); // Copy str2 to the new string
strcat(p, str1); // Concatenate str1
printf("%s", p); // print it
free(p); // free the allocated memory
return 0;
}
Попробуйте код здесь: http://ideone.com/oydJHN
Вместо динамического выделения памяти вы можете использовать что-то вроде:
#define LENGTH_OF_RESULT 100
char result[LENGTH_OF_RESULT];
вместо char* p;
. Вы должны убедиться, что LENGTH_OF_RESULT достаточно велик, чтобы удерживать конкатенированную строку.
Преимущество распределения динамической памяти заключается в том, что вам не нужно беспокоиться о размере целевой строки - просто выделите то, что вам нужно, на основе длины входных строк и добавьте 1 для нулевого завершения.
Недостатком использования динамического распределения памяти является то, что вы должны помнить free
память при выполнении с ней.
ли вы взглянули на 'strcat'? – SMA