Jak používat funkci strncpy() v C++

Jak Pouzivat Funkci Strncpy V C



V C++ existuje mnoho funkcí pro kopírování řetězců nebo znaků z jednoho místa na druhé, což jsou strcpy, strncpy a memcpy. Liší se od sebe svými funkcemi. Tento tutoriál bude diskutovat o strncpy() funkce v C++.

Co je funkce strncpy() v C++

Funkce strncpy() je vestavěná funkce jazyka C++, která se používá ke kopírování pevného počtu znaků z jednoho řetězce do druhého. Funkce potřebuje tři parametry: cílový řetězec, který bude obsahovat znaky, zdrojový řetězec, který znaky poskytne, a počet znaků ke kopírování. Pokud je zdrojový řetězec menší než zadaný počet znaků, bude cílový řetězec doplněn prázdnými znaky na zbývající délku.

Prototyp funkce strncpy() je uveden níže.







char * strncpy ( char * ruce konst char * src, velikost_t počet ) ;

Jaké jsou parametry C++ strncpy()

Všechny parametry strncpy() funkce jsou vysvětleny níže.



  • ruka: Ukazatel na cílové pole, do kterého byl obsah nasměrován
  • src: Ukazatel na zdrojové pole, ze kterého je obsah
  • počet: Nejvyšší počet znaků, které lze zkopírovat ze zdroje do cíle.

Jak funguje funkce strncpy() v C++

strncpy() funkce přijímá tři argumenty: dest, src, a počet . Kontroluje, zda src řetězec je ukončen nulou, a pokud ano, zkopíruje zadaný počet znaků z src řetězec k Start tětiva. Pokud je počet menší než délka src řetězec, do kterého byly přeneseny znaky prvního počtu Start řetězec a nejsou ukončeny null. Pokud počet překročí délku src , všechny postavy z src jsou zkopírovány do Start a byly přidány další ukončovací prázdné znaky, dokud nebudou zapsány všechny počítací znaky.



Uvedený příklad ilustruje fungování C++ strncpy() funkce.





#include
#include
použitím jmenný prostor std ;
int hlavní ( )
{
char src_str [ ] = 'Píšu kód pro strncpy' ;
char dest_str [ 60 ] ;
strncpy ( dest_str,src_str, strlen ( src_str ) ) ;
cout << dest_str << ' \n ' ;
vrátit se 0 ;
}

V tomto programu jsme použili <řetězec.h> hlavičkový soubor, protože obsahuje strncpy() funkce. Definovali jsme dva řetězce, jeden je src_str a druhý je dest_str. strncpy() funkce, která bere data řetězec src_str a zkopíruje jej do dest_str . Tady strlen(src_str) se používá k počítání celkového počtu znaků z řetězec src_str .

The výstup programu lze zobrazit níže.



Jaké jsou problémy s používáním strncpy() v C++

  • Pokud v cílovém poli není žádný znak null nebo řetězec není ukončen nulou, náš program nebo kód může dříve nebo později narazit na problémy. Nenulový ukončený řetězec v C++ se stal rizikovým kódem, který se může kdykoli během provádění programu zlomit. To může mít za následek chybu segmentace v programu. Jako výsledek, strncpy() nezajišťuje, že cílový řetězec je vždy ukončen nulou, což z něj činí riskantní kód pro program, který píšeme.
  • Tato funkce nedokáže zkontrolovat přetečení, takže pokud se pokusíme zkopírovat zdrojový řetězec do cíle, který je menší než zdroj, dostaneme chybu a nedefinované chování.

Závěr

Ke kopírování dat z jednoho řetězce do druhého používáme strncpy() v C++, což je vestavěná funkce <řetězec.h> hlavičkový soubor. V tomto článku jsme diskutovali o syntaxi a fungování C++ strncpy funkce s příkladem. Zdůraznili jsme také některé problémy, kvůli kterým strncpy může náš kód učinit riskantním.