Čo je funkcia strncpy() v C++
Funkcia strncpy() je vstavaná funkcia C++, ktorá sa používa na kopírovanie pevného množstva znakov z jedného reťazca do druhého. Funkcia potrebuje tri parametre: cieľový reťazec, ktorý bude obsahovať znaky, zdrojový reťazec, ktorý poskytne znaky, a počet znakov na kopírovanie. Ak je zdrojový reťazec menší ako zadaný počet znakov, cieľový reťazec bude doplnený prázdnymi znakmi na zostávajúcu dĺžku.
Prototyp funkcie strncpy() je uvedený nižšie.
char * strncpy ( char * ruky konšt char * src, size_t počítať ) ;
Aké sú parametre C++ strncpy()
Všetky parametre strncpy() funkcie sú vysvetlené nižšie.
- ruka: Ukazovateľ na cieľové pole, do ktorého sa obsah dostal
- src: Ukazovateľ na zdrojové pole, z ktorého pochádza obsah
- počítať: Najvyšší počet znakov, ktoré možno skopírovať zo zdroja do cieľa.
Ako funguje funkcia strncpy() v C++
strncpy() funkcia akceptuje tri argumenty: dest, src, a počítať . Kontroluje, či src reťazec je ukončený nulou a ak áno, skopíruje zadaný počet znakov z src reťazec k začať reťazec. Ak je počet menší ako dĺžka src reťazec, do ktorého boli prenesené prvé počítacie znaky začať reťazec a nie sú ukončené nulou. Ak počet presahuje dĺžku src , všetky postavy z src sú skopírované do začať , a boli zahrnuté ďalšie ukončovacie nulové znaky, kým sa nezapíšu všetky počítacie znaky.
Uvedený príklad ilustruje fungovanie C++ strncpy() funkciu.
#include
#include
použitím menný priestor std ;
int Hlavná ( )
{
char src_str [ ] = 'Píšem kód pre strncpy' ;
char dest_str [ 60 ] ;
strncpy ( dest_str,src_str, strlen ( src_str ) ) ;
cout << dest_str << ' \n ' ;
vrátiť 0 ;
}
V tomto programe sme použili
The výkon programu je možné zobraziť nižšie.
Aké sú problémy s používaním strncpy() v C++
- Ak v cieľovom poli nie je žiadny znak null alebo reťazec nie je ukončený nulou, náš program alebo kód môže skôr či neskôr naraziť na problémy. Nenulový ukončený reťazec v C++ sa stal rizikovým kódom, ktorý sa môže kedykoľvek počas vykonávania programu zlomiť. Môže to mať za následok chybu segmentácie v programe. Ako výsledok, strncpy() nezabezpečuje, že cieľový reťazec je vždy ukončený nulou, čo z neho robí riskantný kód pre program, ktorý píšeme.
- Táto funkcia zlyhá pri kontrole pretečenia, takže ak sa pokúsime skopírovať zdrojový reťazec do cieľa, ktorý je menší ako zdroj, dostaneme chybu a nedefinované správanie.
Záver
Na kopírovanie údajov z jedného reťazca do druhého používame strncpy() v C++, čo je vstavaná funkcia