#include <stdio.h>
#include <string.h>
int main() {
// "Welcome\n" 包含 7 個可見字元 + 1 個換行符 = 8 位元組
// strlen 不計算結尾的 '\0'
printf("%zu\n", strlen("Welcome\n"));
return 0;
}
8
strlen 返回 size_t (無號整數),格式字建議用 %zu (C99) 或 %lu。'\0'。\n 佔 1 位元組,同理 \t、\\、\" 等皆佔 1 位元組。sizeof("Welcome\n") 會返回 9 (含結尾 \0),這是編譯期常數,與 strlen 執行期計算不同。| 表達式 | 結果 | 說明 |
|---|---|---|
strlen("abc") | 3 | 執行期計算內容長度 |
sizeof("abc") | 4 | 編譯期陣列大小,含 \0 |
char *p = "abc"; sizeof(p) | 4/8 | 指標大小 (32/64 位元),非字串長度 |