人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C言語での質問です。

参考書を参考に
以下の例文を実行したところ…

#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個のものを入れることができるのではないかと
思っています。

何か勘違いをしているのでしょうか?
よろしくお願いします。




●質問者: HAYA
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● hissssa
●100ポイント ベストアンサー

配列の宣言で使える有効範囲の認識が間違っています。
char str[100] の宣言で使える範囲は、str[0]?str[99]までです。

即ち、str[100]は使えないので、この配列に格納できるcharの個数は100個までであり、最後の\0の分を差し引いて使用可能な文字は99個までということになります。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ