#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