アカウント名:
パスワード:
良い子はマネしちゃダメだぞ お約束だよ。
/* fgets(buf, 256, stdin); */ fgets(buf, sizeof(buf), stdin);
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常
除算エラーがでました (スコア:0)
{
int a;
char buf[256];
printf("ドメインいくつ持っている?");
gets(buf);
a = atoi(buf);
printf("あなたの常識度数 : %d", 100 / a);
}
/* 実際にコンパイルして動かしていないのでAC */
良い子のお約束 (スコア:0)
Re:良い子のお約束 (スコア:0)
printf("あなたの非常識度数 : %d", 100 / atoi(gets(buf)));
Re:良い子のお約束 (スコア:0)
sprintf 系も外部からの入力を直接 受け取るような所には使っちゃダメ。極力、snprintf 系を使う。
短いプログラムでもちゃんとした API を使う癖をつけないと、
ついつい「本番」のプログラムで書いちゃうよ。
それが嫌なら C/C++ は捨てて、もっと secure な言語で書こう。Java とかね。
約束だよ。
Re:良い子のお約束 (スコア:0)
良い子はマネしちゃダメだぞ
お約束だよ。
Re:良い子のお約束 (スコア:0)
>ついつい「本番」のプログラムで書いちゃうよ。
僕も昔はそう思っていましたが、本当にそうでしょうか?
gets/scanf がセキュリティーホールであることを知っているプログラマーが自分で使う使い捨てのプログラムで gets を使っていても、本番」のプログラムで使うとは思えないんですが。
僕はそうです。(使い捨てのプログラム
fgetsを使いましょう(Re:除算エラーがでました) (スコア:0)
fgets(buf, 256, stdin);
Re:こまかいかもしれないけど(Re:除算エラーがでまし (スコア:1)
/* fgets(buf, 256, stdin); */
fgets(buf, sizeof(buf), stdin);
Re:こまかいかもしれないけど(Re:除算エラーがでまし (スコア:0)
なんでみんな変数名の時もsizeof(変数名)としたがるんだろう?
型名の時は、sizeof(型名)じゃなくてsizeof キャスト演算子なのに。
Re:こまかいかもしれないけど(Re:除算エラーがでまし (スコア:1, 参考になる)
2.慣れや一貫性の問題
sizeof((char)), sizeof(hoge) という一貫性もあれば sizeof(char), sizeof(hoge) という一貫性もあるってこと。
逆に、あなたのように、つけなくても良いならつけたくない、というのもよく分からんが。
# こういう書き込みって大抵、おまえら、こんな書き方できるんだぞ?知ってたか?って優越感に浸ってるだけが多いんだが。
# 明確な理由をお持ちかな?
昔は return, sizeof は括弧をつけるとタイポミスでリンクエラーが出るから辞めるべしなんてあったけど、今はプロトタイプもしっかりしないとダメな時代になってきてるんでどうでも良いと思うけど?
こまかいが (スコア:1)
そう解釈しても問題はほとんどないけど、
C 言語の文法は sizeof (type-name) となっているので、sizeof(型名) の方が正式。 詳しくは K&R本の巻末付録の BNF 表記を参考のこと。
逆に sizeof 変数名 は、正確には sizeof 単項式。
だから sizeof --a とか sizeof sizeof (double) とかもあり。
コンタミは発見の母
Re:fgetsを使いましょう(Re:除算エラーがでました) (スコア:0)
fgets(buf, 256, stdin);