Mis on strncpy() funktsioon C++ keeles
Funktsioon strncpy() on sisseehitatud C++ funktsioon, mida kasutatakse kindla hulga märkide kopeerimiseks ühest stringist teise. Funktsioon vajab kolme parameetrit: sihtstring, mis sisaldab märke, lähtestring, mis annab märgid, ja kopeeritavate märkide arv. Kui lähtestring on määratud märkide arvust väiksem, täidetakse sihtkoha string ülejäänud pikkusega nullmärkidega.
Allpool on toodud funktsiooni strncpy() prototüüp.
char * strncpy ( char * käed konst char * src, suurus_t loendama ) ;
Mis on C++ strncpy() parameetrid
Kõik parameetrid strncpy() funktsiooni selgitatakse allpool.
- käsi: Kursor sihtmassiivile, kuhu sisu on viidud
- src: Osuti lähtemassiivile, kust sisu pärineb
- arv: Suurim märkide arv, mida saab allikast sihtkohta kopeerida.
Kuidas funktsioon strncpy() töötab C++-s
strncpy() funktsioon aktsepteerib kolme argumenti: siht, src, ja loendama . See kontrollib, kas src string on null-lõpuga ja kui jah, siis kopeerib see määratud arvu tähemärke failist src stringi juurde alustada string. Kui arv on väiksem kui pikkus src string, esimesed tähemärgid on üle kantud alustada string ja ei ole null-lõpuga. Kui arv ületab pikkuse src , kõik tegelased alates src on kopeeritud alustada , ja täiendavad lõpetavad nullmärgid on lisatud seni, kuni kõik loendusmärgid on kirjutatud.
Antud näide illustreerib C++ tööd strncpy() funktsiooni.
#include
#include
kasutades nimeruum std ;
int peamine ( )
{
char src_str [ ] = 'Ma kirjutan strncpy koodi' ;
char dest_str [ 60 ] ;
strncpy ( siht_str, src_str, strlen ( src_str ) ) ;
cout << dest_str << ' \n ' ;
tagasi 0 ;
}
Selles programmis kasutasime
The väljund programmi saab näidata allpool.
Millised on probleemid strncpy() kasutamisega C++-s
- Kui sihtmassiivis pole nullmärki või string ei ole null-lõpuga, võib meie programmis või koodis varem või hiljem probleeme tekkida. Mitte-null-lõpetatud string C++-s on muutunud riskantseks koodiks, mis võib programmi täitmise ajal igal hetkel puruneda. Selle tulemuseks võib olla programmis segmenteerimisvea. Tulemusena, strncpy() ei taga, et sihtstring on alati null-lõpuga, muutes selle kirjutatava programmi jaoks riskantseks.
- See funktsioon ei kontrolli ületäitumist, nii et kui proovime lähtestringi kopeerida sihtkohta, mis on allikast väiksem, saame veateate ja määratlemata käitumise.
Järeldus
Andmete kopeerimiseks ühest stringist teise kasutame strncpy() keeles C++, mis on sisseehitatud funktsioon