c
1char *str; 2puts("文字列を入力してください。"); 3scanf("%s", str);
プログラムの中で自分で考えてこのように記述した部分があるのですが、これでは良くない気がしました。
というのも、私の理解では、char*型のstrを宣言した時点で、記憶域上のどこかに一文字分の入れ物(ここではbox)を確保して、かつその入れ物のアドレスを格納した箱strができます。しかしboxの後ろの記憶域は確保していないので、scanfでたくさんの文字列を入力したら、大事な値が入っていた箱を壊したりしてしまうのではないかと思います。
なので正しくは、
c
1char str[100]; 2puts("文字列を入力してください。"); 3scanf("%s", str);
のようにあらかじめ100文字分の入れ物を確保してあげるのが正しいのではないかと思うわけです。
この理解は間違っているでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/08 17:09