C не поддерживает строки, которые есть в некоторых других языках. Строка в C - это просто указатель на массив char
, который заканчивается первым нулевым символом. В C. нет оператора конкатенации строк *
Используйте strcat
для объединения двух строк. Вы можете использовать следующую функцию:
#include <stdlib.h>
#include <string.h>
char* concat(const char *s1, const char *s2)
{
char *result = malloc(strlen(s1) + strlen(s2) + 1); // +1 for the null-terminator
// in real code you would check for errors in malloc here
strcpy(result, s1);
strcat(result, s2);
return result;
}
Это не самый быстрый способ сделать это, но вы не должны беспокоиться об этом сейчас. Обратите внимание, что функция возвращает блок памяти, выделенной из кучи, вызывающей стороне и передает владение этой памятью. Вызывающий абонент обязан free
памяти, когда он больше не нужен.
Вызовите функцию следующим образом:
char* s = concat("derp", "herp");
// do things with s
free(s); // deallocate the string
Если вам действительно не понравилась производительность, вам следует избегать повторного сканирования входных буферов в поисках нулевого терминатора.
char* concat(const char *s1, const char *s2)
{
const size_t len1 = strlen(s1);
const size_t len2 = strlen(s2);
char *result = malloc(len1 + len2 + 1); // +1 for the null-terminator
// in real code you would check for errors in malloc here
memcpy(result, s1, len1);
memcpy(result + len1, s2, len2 + 1); // +1 to copy the null-terminator
return result;
}
Если вы планируете много работать со строками, то вам лучше использовать другой язык, который поддерживает строки первого класса.