#99 Article 977 Posted at 1995/12/05 03:16:44 by MSP-Iris (MAP4370) [SAHOU]
Subject: Re:*9 プログラミングお作法の話 /971 .... /941 /940
>以下のコードを見ると、3桁以上入力すると(最悪の場合)暴走の間違い
>じゃないでしょうか?
>> char instrg[3]; int inpara;
これは指摘されると思ってました。
今回はまぁチェックは適当でいいかなということでGOサインを出しました。
...が... v
それにしても、理論的に char instrg[4]; じゃなきゃいけないですね(汗;;)。
#宣言するのは「配列の個数」で、「添字の最大値」ではないんでしたね。
#BASICの配列とは違うんだった。(^^ゞ
まぁ、fgest(str,n,stdin) の方が考え方としては正しいんでしょうけど。
この場合は char instrg[4]; fgets(instrg,4,stdin); かな?
3桁+\0 or 1~2桁+\n+\0 で4バイト。これならアセンブラ版と同一動
作だし、\n は atoi が処理してくれるから、こうすべきでした。
この辺は「まともなMS-Cの参考書を買って、その日に書いたプログラム」
ってことで勘弁して下さい。f"(^^;;
ちなみに、うちだと gest(str) は126桁までしか入力できないのですが、
これは機種依存ですか?
あと、どっちかっていうと
> if(inpara<=0|inpara>999)
~
これを指摘されるかなぁと。
MAP4370 MSP-Iris