C Language Calcola la lunghezza: strlen ()


Esempio

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv) 
{
    /* Exit if no second argument is found. */
    if (argc != 2) 
    {
        puts("Argument missing.");
        return EXIT_FAILURE;
    }

    size_t len = strlen(argv[1]);
    printf("The length of the second argument is %zu.\n", len);

    return EXIT_SUCCESS;
}

Questo programma calcola la lunghezza del suo secondo argomento di input e memorizza il risultato in len . Quindi stampa quella lunghezza sul terminale. Ad esempio, se eseguito con i parametri program_name "Hello, world!" , il programma uscirà The length of the second argument is 13. perché la stringa Hello, world! è lungo 13 caratteri.

strlen conta tutti i byte dall'inizio della stringa fino a, ma non incluso, il carattere NUL terminante, '\0' . Come tale, può essere utilizzato solo quando la stringa è garantita per essere terminata NUL.

Inoltre, tieni presente che se la stringa contiene caratteri Unicode, strlen non ti dirà quanti caratteri ci sono nella stringa (dal momento che alcuni caratteri potrebbero essere più byte). In questi casi, è necessario contare i caratteri ( es . Unità di codice) da soli. Considera l'output del seguente esempio:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) 
{
    char asciiString[50] = "Hello world!";
    char utf8String[50] = "Γειά σου Κόσμε!"; /* "Hello World!" in Greek */

    printf("asciiString has %zu bytes in the array\n", sizeof(asciiString));
    printf("utf8String has %zu bytes in the array\n", sizeof(utf8String));
    printf("\"%s\" is %zu bytes\n", asciiString, strlen(asciiString));
    printf("\"%s\" is %zu bytes\n", utf8String, strlen(utf8String));
}

Produzione:

asciiString has 50 bytes in the array
utf8String has 50 bytes in the array
"Hello world!" is 12 bytes
"Γειά σου Κόσμε!" is 27 bytes