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;
}


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;
}


Scrivi qualcosa: ciao come va Numero di caratteri inseriti: 13

Indice pagine linguaggio C: