C語言基礎
char s[10] = "hello";
printf("%zu %zu\n", strlen(s), sizeof s);關於放入字串的 char 陣列,執行上方程式碼時的輸出,下列何者正確?
- A5 10
- B6 10
- C10 10
查看答案與解析
正確答案:A. 5 10
C語言的字串是在字元序列的最後放上結尾字元 '\0' 的東西。strlen 從開頭數到 '\0' 之前的字元數,因此 "hello" 為5。sizeof s 是整個陣列 s 的大小,即宣告的元素數10位元組(其餘元素放入0)。若像 char s[] = "hello"; 這樣省略元素數,就會成為包含 '\0' 的6位元組陣列。
- A. 正確。strlen 不計算結尾的 '\0' 而為5,sizeof 是陣列的10位元組。
- B. strlen 不計算結尾的 '\0',因此是5而不是6。
- C. strlen 回傳的不是陣列的大小,而是 '\0' 之前的字元數。