パスワードを忘れた? アカウント作成
451867 journal

Endowsの日記: Endows の へっぽこプログラマ日誌 第1回 2

日記 by Endows

こんな感じでちょっと悩む。

FILE *fp;
char c;

fp=fopen("hogehoge",r);

while((c=fgetc(fp))!=EOF){
printf("%c",c);
}

で、なんかファイル全部読みきらずに終わっちゃうぞ、と。

ちょっと man なんかで調べただけで、一発で解決しましたが。
( ヒント : fgetc が返す型は? …では、 &hFF だと…? )

以前も同じ罠にひっかかった気のする、学習能力の乏しい Endows でした。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Yoh2 (6924) <yoh2@d2.dion.ne.jp> on 2002年12月25日 11時56分 (#224825) 日記
    昔やってました。というか、仕様を勘違いしてました。
    で、(c == (char)EOF)の場合に問題が起こることは分かっていたので、「扱いづらいfreadかシステムコール使うしかないじゃないか。ANSI Cつかえね~」なんて思ってました。おはずかし...
    そんなこんな(ほかに、scanfや文字列関係の関数の扱いづらさなども)で、しばらくの間はANSI Cライブラリを一切使わないスタイルでプログラミングしていたり。(どうせMac OSで動けばよかったし(マテ))
    今なら文字列関係の関数の一部は使う...かな?
    --
    巧妙に潜伏したバグは心霊現象と区別が付かない。
    • 過去に書いたプログラムを引っ張り出す機会があったので調べてみたところ、今回含めて3回同じトラップに引っかかった形跡がありました。今度こそ頭に叩きこんだ…つもり。

      そんなこんな(ほかに、scanfや文字列関係の関数の扱いづらさなども)で

      実際、文字列操作メインのプログラムを書いていると(そういうのしか書いたこと無いような…)、注意しなければならないことが多くて K&R本は手放せないです。それ以前の技量の問題? う~ん、たしかにその通り…

      親コメント
typodupeerror

ソースを見ろ -- ある4桁UID

読み込み中...