計算長度 strlen()

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

該程式計算其第二個輸入引數的長度,並將結果儲存在 len 中。然後它將該長度列印到終端。例如,當使用引數 program_name "Hello, world!" 執行時,程式將輸出 The length of the second argument is 13.,因為字串 Hello, world! 長度為 13 個字元。

strlen 計算字串開頭的所有位元組,但不包括終止 NUL 字元'\0'。因此,只有在保證字串被 NUL 終止時才能使用它。

另外請記住,如果字串包含任何 Unicode 字元,strlen 將不會告訴你字串中有多少字元(因為某些字元可能是多個位元組長)。在這種情況下,你需要自己計算字元( 程式碼單元)。考慮以下示例的輸出:

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

輸出:

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