C++'da strncpy() İşlevi Nasıl Kullanılır?

C Da Strncpy Islevi Nasil Kullanilir



C++'da dizeleri veya karakterleri bir yerden başka bir yere kopyalamak için strcpy, strncpy ve memcpy gibi birçok işlev vardır. İşlevlerine göre birbirlerinden farklıdırlar. Bu eğitimde tartışılacak strncpy() C++'da işlev.

C++'daki strncpy() İşlevi nedir?

strncpy() işlevi, sabit miktarda karakteri bir dizeden diğerine kopyalamak için kullanılan yerleşik bir C++ işlevidir. Fonksiyonun üç parametreye ihtiyacı vardır: karakterleri tutacak hedef dizgi, karakterleri sağlayacak kaynak dizgi ve kopyalanacak karakter sayısı. Kaynak dize belirtilen karakter sayısından azsa, hedef dize kalan uzunluğa kadar boş karakterlerle doldurulur.

Bir strncpy() fonksiyonunun prototipi aşağıda verilmiştir.







karakter * strncpy ( karakter * eller sabit karakter * kaynak, size_t saymak ) ;

C++ strncpy()'nin Parametreleri nelerdir?

tüm parametreleri strncpy() işlevi aşağıda açıklanmıştır.



  • el: İçeriğin gönderildiği hedef diziye işaretçi
  • kaynak: İçeriğin geldiği kaynak diziye bir işaretçi
  • saymak: Kaynaktan hedefe kopyalanabilecek en yüksek karakter sayısı.

C++'da strncpy() İşlevi Nasıl Çalışır?

strncpy() işlev üç argüman kabul eder: hedef kaynak, Ve saymak . olup olmadığını kontrol eder. kaynak dize boş sonludur ve evet ise, diziden belirtilen sayıda karakteri kopyalar. kaynak dize başlangıç sicim. Sayı, uzunluğun altındaysa kaynak dize, ilk sayma karakterleri şuraya aktarıldı: başlangıç string ve null ile sonlandırılmış değildir. Sayı, uzunluğunu aşarsa kaynak , tüm karakterler kaynak kopyalanır başlangıç ve sayılan karakterlerin tümü yazılana kadar fazladan sonlandırıcı boş karakterler dahil edilmiştir.



Verilen örnek, C++'ın çalışmasını göstermektedir. strncpy() işlev.





#include
#include
kullanarak ad alanı std ;
int ana ( )
{
karakter src_str [ ] = 'strncpy için bir kod yazıyorum' ;
karakter dest_str [ 60 ] ;
strncpy ( dest_str,src_str, strlen ( src_str ) ) ;
cout << dest_str << ' \N ' ;
geri dönmek 0 ;
}

Bu programda kullandığımız başlık dosyası içerdiği için strncpy() işlev. İki dizi tanımladık, biri src_str ve diğeri dest_str. strncpy() veri alan fonksiyon src_str dizesi ve şuraya kopyalar: dest_str . Burada strlen(src_str) toplam karakter sayısını saymak için kullanılır. src_str dizesi .

bu çıktı program aşağıda gösterilebilir.



C++'da strncpy() Kullanımıyla İlgili Sorunlar Nelerdir?

  • Hedef dizide boş karakter yoksa veya dizge boş sonlandırılmamışsa, programımız veya kodumuz er ya da geç sorunlarla karşılaşabilir. C++'da boş olmayan sonlandırılmış bir dize, programın yürütülmesi sırasında herhangi bir anda bozulabilecek riskli bir kod haline geldi. Programda bir segmentasyon hatasına neden olabilir. Sonuç olarak, strncpy() hedef dizenin her zaman boş sonlandırılmış olmasını sağlamaz, bu da yazdığımız program için onu riskli bir kod haline getirir.
  • Bu işlev taşmayı kontrol edemez, bu nedenle kaynak dizgiyi kaynaktan daha küçük boyutlu bir hedefe kopyalamaya çalışırsak, bir hata ve tanımsız davranış alırız.

Çözüm

Verileri bir diziden diğerine kopyalamak için şunu kullanırız: strncpy() yerleşik bir işlev olan C ++ 'da başlık dosyası. Bu yazıda, C++'ın sözdizimini ve çalışmasını tartıştık. strncpy bir örnekle işlev Ayrıca bazı konuların altını çizdik. strncpy işlevi kodumuzu riskli hale getirebilir.