ここから本文です

C言語についての質問です

aniki03333さん

2013/6/920:21:23

C言語についての質問です

#include <stdio.h>

int main(void)
{
char str[16];
char str1[12] = "DRAGON";
char str2[] = "QUEST";
int i = 3;
sprintf(str,"%s%s%d\n",str1,str2,i);
printf(str);
return 0;
}
このプログラムでなぜstrは16の要素数を確保しているのですか?またstr1も同様に疑問を持っています
EOSを考慮して考えても納得がいきません、どなたか教えていただけるとうれしいです

閲覧数:
147
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

2013/6/921:13:03

DRAGONQUEST9999
まで対応したかったから...なわけないか。単に余裕を持たせただけでしょう。

str1は
strcat(str1,str2);
としようと考えてやっぱりやめた名残だとか...動くし問題も起こさないのは確かだから気持ち無駄があるけどいじらない、ってやつ。そういう「盲腸」ってよく残ってるよね。

4Byteに境界揃えられるシステムならサイズを4の倍数に合わせておいても多分使用メモリとしては変わらないはず、とかの思いも見え隠れ。

質問した人からのコメント

2013/6/9 22:48:41

成功 なるほど、ドラクエが9999まで出るとすればこの疑問は晴れるという事ですね
ありがとうございました

ベストアンサー以外の回答

1〜1件/1件中

div********さん

2013/6/920:38:57

別に16に意味はないと思います。

必要最小限のサイズよりも少し多めに取ったりするのは

よくあることですし。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる