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.