Trong C, "chuỗi" chỉ là charmảng đơn giản . Do đó, bạn không thể nối trực tiếp chúng với các "chuỗi" khác.
Bạn có thể sử dụng strcathàm, nối thêm chuỗi được trỏ vào srccuối chuỗi được trỏ bởi dest:
char *strcat(char *dest, const char *src);
Dưới đây là một ví dụ từ cplusplus.com :
char str[80];
strcpy(str, "these ");
strcat(str, "strings ");
strcat(str, "are ");
strcat(str, "concatenated.");
Đối với tham số đầu tiên, bạn cần cung cấp bộ đệm đích. Bộ đệm đích phải là bộ đệm mảng char. Ví dụ:char buffer[1024];
Đảm bảo rằng tham số đầu tiên có đủ dung lượng để lưu trữ những gì bạn đang cố sao chép vào đó. Nếu có sẵn cho bạn, sẽ an toàn hơn khi sử dụng các hàm như: strcpy_svà strcat_snơi bạn rõ ràng phải chỉ định kích thước của bộ đệm đích.
Lưu ý : Không thể sử dụng một chuỗi ký tự như một bộ đệm, vì nó là một hằng số. Vì vậy, bạn luôn phải phân bổ một mảng char cho bộ đệm.
Giá trị trả về của strcatđơn giản có thể bị bỏ qua, nó chỉ trả về cùng một con trỏ như được truyền vào làm đối số đầu tiên. Nó ở đó để thuận tiện và cho phép bạn xâu chuỗi các cuộc gọi thành một dòng mã:
strcat(strcat(str, foo), bar);
Vì vậy, vấn đề của bạn có thể được giải quyết như sau:
char *foo = "foo";
char *bar = "bar";
char str[80];
strcpy(str, "TEXT ");
strcat(str, foo);
strcat(str, bar);