Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
C Programlama

BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <string.h> > strncat

strncat() fonksiyonu

Bildirim

char* strncat(char *dest, const char *src, size_t n);

char* strncat(char *restrict dest, const char *restrict src, size_t n); (C99)

errno_t strncat_s(char *restrict dest, rsize_t destsz, const char *restrict src, rsize_t n); (C11)

Açıklama

Src parametresi ile gösterilen ve boş bir karakter ('\0') ile sonlandırılmış karakter dizisinin n parametre değeri kadar ilk karakterini, 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 parametresindeki karakter dizisinin uzunluğu n parametre değerinden küçük ise, sadece sonlandırıcı boş karaktere ('\0') kadar olan içerik kopyalanır.

Aşağıdaki koşullardan biri gerçekleştiğinde belirsiz sonuçlar elde edilir:

  • Eğer dest parametresi birleştirme sonunda elde edilecek karakter dizisini, sonlandırıcı boş karakter ('\0') dahil olmak üzere, alabilecek kadar yeterli bir alana sahip değilse,
  • Eğer src ve dest parametreleri çakışırsa,
  • Dest parametresi boş bir karakterle ('\0') sonlandırılmış bir karakter dizisini gösteren bir işaretçi değilse,
  • Src parametresi bir karakter dizisini gösteren bir işaretçi değilse.

strncat_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:

  • Src veya dest parametre değeri NULL bir işaretçi ise,
  • Destsz veya n parametre değeri 0 veya RSIZE_MAX değerinden büyük ise,
  • Dest parametresinin ilk destsz değeri kadar yerinde boş bir karakter ('\0') yoksa,
  • Ekleme işleminde kesinti meydana gelirse (n veya src parametre uzunluğu, hangisi daha düşükse, dest parametresinin boş sonlandırıcı karakteri ('\0') ile ve destsz parametre değeri arasındaki boşluktan büyük olursa),
  • Src ve Dest parametrelerindeki dizeler arasında örtüşme meydan gelirse.

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.

n: Dest parametresinin sonuna eklenecek olan maksimum karakter sayısıdır.

destsz: Dest parametresinin boyutunu gösterir.

Dönüş değeri

Dönüş değeri;

Strncat() fonksiyonu dest parametre değerini geri döndürür.

Strncat_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";

    strncat(cdizi1, cdizi2, 4);

    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 Pro

Program bir karakter dizisinin içeriğinin ilk 4 karakterini strncat() fonksiyonu diğer bir karakter dizisinin sonuna ekledikten sonra elde edilen yeni karakter dizisini ekrana yazar.

Kaynak kodu

Copyright Public domain


char* strncat(char* dest, const char* src, size_t n)
{
  /* Ekleme yapılacak karakter dizisinin sonunu işaretçiye aktarma */
  char *ptr = dest + strlen(dest);
 
  /* Eklenecek karakter dizisinin n kadar ilk karakterini sırayla ekleme yapılacak karakter dizisine ekleme */
  while(n--) {
     *ptr++ = *src++;
  }
 
  /* Ekleme yapılan karakter dizisinin sonuna karakter dizisi sonu işareti ekleme */
  *ptr = '\0';
 
  /* Ekleme yapılan karakter dizisini geri döndürme */
  return dest;
}