В 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);