Trong C, "chuỗi" chỉ là char
mả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 strcat
hàm, nối thêm chuỗi được trỏ vào src
cuố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_s
và strcat_s
nơ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);