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' を数えないので、6ではなく5です。
- C. strlen は配列の大きさではなく、'\0' の手前までの文字数を返します。