#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