#99 Article 130 Posted at 1991/10/22 17:38:26 by PAZ (MAP2562) [IMP.MDX1]

Subject: Re: Re: Re: MDX1.EXE Ver.1.03 /124 /123 /155(#46)

いつも MDX1 を便利に使わせてもらっています。
 ところで、ソースを眺めていて気付いた点がありましたので
 ちょこっと書かせて下さい。

 関数 int fin(FILE *fp,char *st) ですが、
 1行が160文字を越えていたときに終端文字 '\0' が書き込まれません。
 main の中で line[] の宣言時に初期化(ゼロクリア)が行われるかどうかも
 処理系によって曖昧ですし、どんな状態でも行の最後には '\0' を付けた
 方が無難ですので、以下のようにしたらいいかなぁ、なんて思います。

	for(ln=0;ln<160;ln++){			←160文字までループ
		l=c=getc(fp);
		if (c==EOF || c=='\n') break;	←行の終わりだったら抜ける
		*st++=c;
	}
	*st=0;					←終端文字の書き込み

 あと、これは趣味の問題かもしれませんが、
		*topstr=*instr;
		instr++;
		topstr++;
 のようなコードは
		*topstr++ = *instr++;
 みたいにした方がきっと速いと思います。
 それから条件判断の時には & よりは && の方が確実で速いと思います。
(これは8bitアセンブラ屋の考え方でしょうか・・・?)(^_^;)

 いきなり出てきて色々言ってすみません。
 実際、コメント部の切り出しには大変重宝しています。
 OPRETERさん、これからもがんばって下さい。

                        PAZ