Bildirim
char* strcat(char *dest, const char *src);
char* strcat(char *restrict dest, const char *restrict src); (C99)
errno_t strcat_s(char *restrict dest, rsize_t destsz, const char *restrict src); (C11)
Açıklama
Src parametresi ile gösterilen ve boş bir karakter ('\0') ile sonlandırılmış karakter dizisini, dest parametresi ile gösterilen ve boş bir karakter ('\0') ile sonlandırılmış karakter dizisinin sonuna ekleyerek yine boş bir karakter ('\0') ile sonlandırılmış bir karakter dizisi oluşturur.
Eğer src veya dest parametrelerinden birisi boş bir karakter ile sonlandırılmış bir diziyi göstermiyorsa, belirsiz sonuçlar elde edilir.
strcat_s() fonksiyonu ayrıca, hedef dizinin geri kalanını tanımlanmamış değerlerle doldurabilir ve aşağıdaki hatalar çalışma zamanında algılanır ve yüklenmiş olan kısıtlayıcı işlem fonksiyonu çağrılır:
Parametreler
dest: Sonuna ekleme yapılacak olan boş bir karakter ('\0') ile sonlandırılmış bir karakter dizisidir.
src: Dest parametresinin sonuna eklenecek olan boş bir karakter ('\0') ile sonlandırılmış bir karakter dizisidir.
destsz: Dest parametresine yazılacak maksimum karakter sayısıdır.
Dönüş değeri
Dönüş değeri;
Strcat() fonksiyonu dest parametre değerini geri döndürür.
Strcat_s() fonksiyonu başarı durumunda 0 değerini, hata durumunda sıfır olmayan değer geri döndürür. Hata durumunda ayrıca, dest NULL bir işaretçi değilse veya destsz sıfır değilse veya RSIZE_MAX değerinden büyük değil ise, dest[0] adresine 0 değerini yazar.
Örnek
#include <stdio.h>
#include <string.h>
int main(void)
{
char cdizi1[] = "Bilgisayar";
const char cdizi2[] = " Programlama";
strcat(cdizi1, cdizi2);
printf("cdizi1 bellek içeriği: %s\n", cdizi1);
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar.
cdizi1 bellek içeriği: Bilgisayar Programlama
Program bir karakter dizisinin içeriğini diğer bir karakter dizisinin sonuna strcat() fonksiyonu ile ekledikten sonra elde edilen yeni karakter dizisini ekrana yazar.
Kaynak kodu
Copyright Public domain
char* strcat(char* dest, const char* src)
{
char *ret = dest;
while(*dest)
dest++;
while(*dest++ = *src++);
return ret;
}