Ero sivun ”C” versioiden välillä
Poistettu sisältö Lisätty sisältö
interWiki |
Anr (keskustelu | muokkaukset) p typo |
||
Rivi 398:
Ensimmäisessä funktiossa src on kopioitava merkkijono ja dest taasen on kirjoitettavissa oleva muistialue, johon merkkijonon tulee mahtua kokonaisuudessaan, mukaanlukien loppuun tuleva null-merkki. Funktio palauttaa <tt>dest</tt>:n arvon. Jälkimmäisessä erona on että dest-alueelle kirjoitetaan korkeintaan n merkkiä ja jos tila ei riitä, ei kopion loppuun tule null-merkkiä ja kopiointi loppuu kesken kaiken. Tässä tilanteessa on erittäin tärkeää ettet käytä kopion käsittelyyn pituusrajoittamattomia funktioita (niitä joiden nimessä ei ole ylimääräistä n-kirjainta), sillä ohjelmasi saattaa kaatua. Tästä pienestä rajoituksesta huolimatta kannattaa yleensä käyttää <tt>strncpy</tt>-versiota, koska toinen vaihtoehto on vähintään yhtä tuhoisa: kopiota kirjoitetaan yli sille varatun muistialueen ja syntyy nk. buffer overflow, joka on yleisin tietoturva-aukkojen syy.
Edelleen, koska C-merkkijono on pointteri arvokontekstissa, vertaa myös <tt>==</tt>-operaattori merkkijonojen muistiosoitteita, eikä suinkaan merkkijonojen sisältöä. Sisällön vertailuun tulee
int strcmp(const char* s1, const char* s2);
Rivi 413:
=== Tietueen määritteleminen ===
struct point
|