int strlen (const char* s)
char* strcpy (char* dest, const char* sorg) char* strncpy (char* dest, const char* sorg, int n) char* strcat (char* dest, const char* sorg) char* strncat (char* dest, const char* sorg, int n) |
strlen
(STRing LENght) ritorna il numero di caratteri contenuti in una stringa, escluso il carattere '\0'
; essa è del tutto equivalente alla funzione lunghezza
dell'esempio ex6_5_4
.
Le funzioni strcpy
(STRing CoPY) e strncpy
(STRing
N-CoPY) hanno entrambe il medesimo compito di copiare la stringa
sorg (la quale, si noti, è costante, non essendo soggetta a modifiche
all'interno della funzione) nella stringa dest. La seconda delle due permette inoltre di copiare esattamente n caratteri da sorg; per curiosità si sappia che, nel caso n sia maggiore della lunghezza di sorg, nella stringa dest oltre a tutti i caratteri di sorg, vengono copiati tanti caratteri '\0'
quanti bastano per raggiungere n.
// ex6_6_1.cpp #include <iostream.h> #include <string.h> void main() { char nome[50]; cout << "qual e` il tuo nome? "; cin >> nome; char s[50]; strcpy(s, nome); cout << "dunque ti chiami " << s << "\n"; char t[4]; strncpy(t, nome, 3); t[3] = '\0'; // carattere di fine stringa cout << "e le prime tre lettere " "del tuo nome sono " << t << "\n"; }
esempio di output:
qual e` il tuo nome? Superman
dunque ti chiami Superman
e le prime tre lettere del tuo nome sono Sup
Si noti bene che nel caso si copi l'intera stringa (strcpy
) allora viene copiato anche il carattere di fine stringa '\0'
; se invece la copia riguarda solo i primi n caratteri di una stringa (strncpy
) allora non viene inserito nessun carattere di fine stringa, e dobbiamo effettuare tale operazione ``manualmente'', come nell'esempio precedente.
Le funzioni strcat
(STRing conCATenation) e strncat
(STRing N-conCATenation) servono entrambe a concatenare la stringa sorg alla stringa dest, solo che la seconda di esse estrae solo i primi n caratteri da sorg; al contrario di strncpy
, strncat
inserisce sempre un carattere di terminazione stringa a sorg. Il valore di ritorno di entrambe le funzioni è un puntatore alla stringa dest.
// ex6_6_2.cpp #include <iostream.h> #include <string.h> void main() { char nome[50], cognome[50]; cout << "nome ? "; cin >> nome; cout << "cognome? "; cin >> cognome; // inserisce uno spazio dopo il nome strcat (nome, " "); // concatena le due stringhe e salva // il risultato in tot char* tot = strcat (nome, cognome); cout << "nome completo: " << tot << "\n"; }
esempio di output:
nome ? Mario
cognome? Rossi
nome completo: Mario Rossi