Esimerkiksi strcpy:n käyttö on erittäin vaarallista, mikäli merkkijono jonne kopioidaan jää pienemmäksi kuin mitä kopioidaan. Tällöin kopioidaan seuraavien muistialueiden päälle. Esimerkiksi saattaisi olla:
char jono1[6],jono2[6];
...
strcpy(jono2,"Koira");
strcpy(jono1,"Kissa on!");
...
printf("%s %s\n",jono1,jono2); /* - > Kissa on! on! */
+-----jono2
jono1 v
| 0 1 2 3 4 5 0 1 2 3 4 5
| +-----------------------------------+
+--->|4B|69|73|73|61|20|6F|6E|21|00|61|00|
+-----------------------------------+
K i s s a o n ! NUL a NUL
Edellä jono2:n pilaaminen voitaisiin estää kutsulla strncpy:
char jono1[6],jono2[6];
...
strncpy(jono2,"Koira",6);
strncpy(jono1,"Kissa on!",6);
...
printf("%s %s\n",jono1,jono2); /* - > Kissa Koira Koira */
+-----jono2
jono1 v
| 0 1 2 3 4 5 0 1 2 3 4 5
| +-----------------------------------+
+--->|4B|69|73|73|61|20|6B|6F|69|72|61|00|
+-----------------------------------+
K i s s a K o i r a NUL
Vikana on kuitenkin edelleen se, että nyt strncpy ei laita NUL merkkiä jonon loppuun, mikäli käsittely lopetetaan maksimipituuden takia!
Usein tämä varmistetaan laittamalla NUL-merkki varmuuden vuoksi kopioinnin jälkeen:
... strncpy(jono1,"Kissa on!",6); jono1[6- 1] = 0; ... +-----jono2 jono1 v | 0 1 2 3 4 5 0 1 2 3 4 5 | +-----------------------------------+ +--->|4B|69|73|73|61|00|6B|6F|69|72|61|00| +-----------------------------------+ K i s s a NULK o i r a NUL