C'de "dizeler" sadece düz char
dizilerdir. Bu nedenle, bunları doğrudan diğer "dizelerle" birleştiremezsiniz.
Sen kullanabilirsiniz strcat
tarafından işaret dizesini ekler işlevi, src
tarafından işaret dizisinin sonuna dest
:
char *strcat(char *dest, const char *src);
İşte cplusplus.com'dan bir örnek :
char str[80];
strcpy(str, "these ");
strcat(str, "strings ");
strcat(str, "are ");
strcat(str, "concatenated.");
İlk parametre için, hedef arabelleğinin kendisini sağlamanız gerekir. Hedef arabelleği bir char dizi arabelleği olmalıdır. Örneğin:char buffer[1024];
İlk parametrenin, kopyalamaya çalıştığınız şeyi depolamak için yeterli alana sahip olduğundan emin olun . Size sunulan, bu gibi işlevleri kullanmak güvenlidir: strcpy_s
ve strcat_s
açıkça hedef tampon boyutunu belirtmek zorunda nerede.
Not : Bir dize hazır bilgisi, sabit olduğu için tampon olarak kullanılamaz. Bu nedenle, her zaman arabellek için bir char dizisi ayırmanız gerekir.
Dönüş değeri strcat
yok sayılabilir, yalnızca ilk argümanla aynı işaretçiyi döndürür. Kolaylık sağlamak için oradadır ve aramaları bir kod satırında zincirlemenizi sağlar:
strcat(strcat(str, foo), bar);
Böylece probleminiz şu şekilde çözülebilir:
char *foo = "foo";
char *bar = "bar";
char str[80];
strcpy(str, "TEXT ");
strcat(str, foo);
strcat(str, bar);