В C «строки» - это просто char
массивы. Следовательно, вы не можете напрямую объединять их с другими «строками».
Вы можете использовать strcat
функцию, которая добавляет строку, на которую указывает указатель, src
к концу строки, на которую указывает указатель dest
:
char *strcat(char *dest, const char *src);
Вот пример из cplusplus.com :
char str[80];
strcpy(str, "these ");
strcat(str, "strings ");
strcat(str, "are ");
strcat(str, "concatenated.");
Для первого параметра вам нужно указать сам буфер назначения. Буфер назначения должен быть буфером массива символов. Например:char buffer[1024];
Убедитесь, что первый параметр имеет достаточно места для хранения того, что вы пытаетесь скопировать в него. Если вам доступно, безопаснее использовать такие функции, как: strcpy_s
и strcat_s
где вам явно нужно указать размер буфера назначения.
Примечание . Строковый литерал нельзя использовать в качестве буфера, поскольку он является константой. Таким образом, вы всегда должны выделять массив символов для буфера.
Возвращаемое значение strcat
может просто игнорироваться, оно просто возвращает тот же указатель, который был передан в качестве первого аргумента. Это сделано для удобства и позволяет вам объединять вызовы в одну строку кода:
strcat(strcat(str, foo), bar);
Таким образом, ваша проблема может быть решена следующим образом:
char *foo = "foo";
char *bar = "bar";
char str[80];
strcpy(str, "TEXT ");
strcat(str, foo);
strcat(str, bar);