In article >>236, 236 デフォルトの名無しさん wrote:
>   FILE *fp = NULL;
>   char *buf = NULL;  /* 行バッファです */

意味のない初期化ですね。

>   size_t size = 10240;/* バッファのサイズです */

変数に入れなくてもいいのでは?

>   buf=(char *)malloc(size);

エラーチェックぐらいしておけば?

>   memset(buf,'\0',size);/* 塗りつぶしておきます */

何の意味があるの? (末尾だけじゃだめなの?)

>     if(buf[size-3] != '\0')/* ←←ここです! *//* 行の最後まで読めなかった */
>       /* 領域を拡張して読み直します */

じゃあ1行が数ギガバイトあったらそこまで拡張するのでしょうか?

> この[size-3]の添え字計算はマズイと言うか最適化されませんか?
> char *chkptr = size - 3;として

なぜ-3なの? -1 じゃなくて?