Mikä on strncpy()-funktio C++:ssa
Strncpy()-funktio on sisäänrakennettu C++-funktio, jota käytetään kopioimaan kiinteä määrä merkkejä merkkijonosta toiseen. Funktio tarvitsee kolme parametria: kohdemerkkijono, joka sisältää merkit, lähdemerkkijono, joka tarjoaa merkit, ja kopioitavien merkkien määrä. Jos lähdemerkkijono on pienempi kuin määritetty määrä merkkejä, kohdemerkkijono täytetään tyhjällä merkillä jäljellä olevaan pituuteen.
Strncpy()-funktion prototyyppi on annettu alla.
hiiltyä * strncpy ( hiiltyä * käsissä konst hiiltyä * src, koko_t Kreivi ) ;
Mitkä ovat C++ strncpy()-parametrit
Kaikki parametrit strncpy() toiminto selitetään alla.
- käsi: Osoitin kohdetaulukkoon, johon sisältö on ollut
- src: Osoitin lähdetaulukkoon, josta sisältö on peräisin
- Kreivi: Suurin määrä merkkejä, jotka voidaan kopioida lähteestä kohteeseen.
Kuinka strncpy()-funktio toimii C++:ssa
strncpy() funktio hyväksyy kolme argumenttia: kohde, src, ja Kreivi . Se tarkistaa, onko src merkkijono on tyhjäpääte, ja jos kyllä, se kopioi määritetyn määrän merkkejä tiedostosta src merkkijono alkaa merkkijono. Jos määrä on pienempi kuin pituus src merkkijono, johon ensimmäiset merkit on siirretty alkaa merkkijono eivätkä ne ole tyhjäpääteisiä. Jos määrä ylittää pituuden src , kaikki merkit alkaen src kopioidaan alkaa , ja ylimääräisiä päättyviä nollamerkkejä on sisällytetty, kunnes kaikki määrämerkit on kirjoitettu.
Annettu esimerkki havainnollistaa C++:n toimintaa strncpy() toiminto.
#include
#include
käyttämällä nimiavaruus std ;
int pää ( )
{
hiiltyä src_str [ ] = 'Kirjoitan koodia strncpylle' ;
hiiltyä dest_str [ 60 ] ;
strncpy ( dest_str,src_str, strlen ( src_str ) ) ;
cout << dest_str << ' \n ' ;
palata 0 ;
}
Tässä ohjelmassa käytimme
The ulostulo ohjelma voidaan näyttää alla.
Mitä ongelmia strncpy():n käyttämisessä C++:ssa on
- Jos kohdetaulukossa ei ole tyhjää merkkiä tai merkkijono ei ole tyhjäpääteinen, ohjelmamme tai koodimme saattaa kohdata ongelmia ennemmin tai myöhemmin. Ei-nollapäätteisestä merkkijonosta C++:ssa on tullut riskialtista koodia, joka voi katketa milloin tahansa ohjelman suorituksen aikana. Se voi johtaa ohjelman segmentointivirheeseen. Tuloksena, strncpy() ei takaa, että kohdemerkkijono on aina tyhjäpääteinen, mikä tekee siitä riskialtista koodia kirjoittamamme ohjelmalle.
- Tämä toiminto ei pysty tarkistamaan ylivuotoa, joten jos yritämme kopioida lähdemerkkijonon kohteeseen, joka on kooltaan pienempi kuin lähde, saamme virheilmoituksen ja määrittelemättömän toiminnan.
Johtopäätös
Käytämme tietojen kopioimiseen merkkijonosta toiseen strncpy() C++:ssa, joka on sisäänrakennettu toiminto