参考書を参考に
以下の例文を実行したところ…
#include <stdio.h>
#include <string.h>
int main(void){
char str[100];
printf("格納可能な文字数は%dです\n", sizeof(str) / sizeof(char) - 1);
return 0;
}
出力されるのは 「格納可能な文字数は99です」と出力されます。
これって、本当に99文字入るということでしょうか?…
それともこの例文が間違えているのでしょうか?
でも、strの配列は、100個です。終了の\0が最後に入るとしても
str[0]、str[1]…str[99]と数えていくと、100です。
str[100]自体、101個のものを入れることができるのではないかと
思っています。
何か勘違いをしているのでしょうか?
よろしくお願いします。
配列の宣言で使える有効範囲の認識が間違っています。
char str[100] の宣言で使える範囲は、str[0]~str[99]までです。
即ち、str[100]は使えないので、この配列に格納できるcharの個数は100個までであり、最後の\0の分を差し引いて使用可能な文字は99個までということになります。
コメント(1件)
今は使ってないから忘れた
これを覚えると面白い事になる