AD

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