ใน C "strings" เป็นเพียง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);