Funzione strlen, calcolare la lunghezza di una stringa in C
La funzione strlen del linguaggio C è una funzione in grado di restituire la lunghezza di una stringa, ovvero il numero di caratteri che compongono la stringa, senza contare il carattere nullo '\0' finale. La funzione strlen è una delle funzioni del C che sono rese disponibili dalla libreria string.h, libreria che contiene numerose funzioni utili per effettuare particolari operazioni sulle stringhe.
La sintassi della funzione strlen viene riportata di seguito:
size_t strlen(const char *str);
dove size_t è un tipo di dato long unsigned int usato per rappresentare la dimensione di un oggetto, in questo caso indica il numero di caratteri che compongono la stringa specificata, mentre str è la stringa da conteggiare.
Nota: dato che la funzione strlen fa parte di una libreria, bisogna ricordarsi di includerla all’interno del proprio programma usando la direttiva #include <string.h>.
Esempio di utilizzo della funzione strlen in C
Di seguito vengono riportati due esempi di utilizzo della funzione strlen in C. In particolare nel primo esempio inizializziamo due array di caratteri con due stringhe ("Giuseppe" e "Mario"), calcoliamo la loro lunghezza con la funzione strlen e stampiamo a schermo, con la funzione printf, i valori ottenuti.
#include <stdio.h>
#include <string.h>
int main(){
char nome1[] = "Giuseppe";
char nome2[] = "Mario";
int lun1, lun2;
lun1 = strlen(nome1);
lun2 = strlen(nome2);
printf("Lunghezza nome1: %d\n", lun1);
printf("Lunghezza nome2: %d\n", lun2);
return 0;
}
/* Output:
Lunghezza nome1: 8
Lunghezza nome2: 5
*/
Volendo, invece di dichiarare ulteriori variabili per immagazzinare la dimensione delle stringhe, si può direttamente chiamare la funzione strlen all’interno della printf:
printf("Lunghezza nome1: %d\n", strlen(nome1));
printf("Lunghezza nome2: %d\n", strlen(nome2));
Alcuni compilatori potrebbero mostrare dei warning, in quanto la strlen restituisce un long unsigned int, quindi invece di usare lo specificatore di formato %d, usato per i tipi di dato int, è consigliato usare lo specificatore %ld.
Mentre, nel secondo esempio chiediamo all’utente di inserire una stringa che verrà immagazzinata all’interno di un array di caratteri e successivamente verrà calcolata la sua lunghezza usando la funzione strlen.
Per ricevere in input i caratteri scritti da parte dell’utente, faremo uso della funzione fgets in quanto ci permette di leggere i caratteri senza dover preoccuparci di possibili buffer overflow, come potrebbe accadere utilizzando la funzione gets.
#include <stdio.h>
#include <string.h>
int main(){
char frase[100];
printf("Scrivi qualcosa: ");
fgets(frase, 100, stdin);
printf("Numero di caratteri inseriti: %ld\n", strlen(frase));
return 0;
}
Indice pagine di c
Indice cPagine aggiunte di recente
Indice pagine del linguaggio C: Funzioni, Stringhe, ArrayCome effettuare la radice quadrata con la funzione sqrt in CCome ottenere il valore assoluto con la funzione abs in CCome generare numeri casuali con la funzione rand in CCome generare numeri casuali tra due numeri in C