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