C言語関係掲示板

過去ログ

No.44. LINUXでのEOF入力 


========================================
#include <stdio.h>

main(){
int nc;

nc = 0;
while (getchar() != EOF)
++nc;
printf("%d", nc);
}
========================================

田村といいます。初めまして。

質問があるのですが、教えていただけませんか?
上記のプログラムは、文字数を数えて表示する
単純なプログラムですが、なぜか
標準入力(キーボード)からだとEOFにならないのです。
つまり、なんどリターンキーを押しても
ずーっとプログラムが終了しないのです。
しかも、ファイルからの入力だときちんと結果が表示されます。
STDINには何か特別な仕組みでもあるのですか?
当方LINUXの環境です。

よろしくお願いいたします。


>質問があるのですが、教えていただけませんか?
>上記のプログラムは、文字数を数えて表示する
>単純なプログラムですが、なぜか
>標準入力(キーボード)からだとEOFにならないのです。
>つまり、なんどリターンキーを押しても
>ずーっとプログラムが終了しないのです。

この場合リターンではなくCtrl + D じゃないでしょうか?
文字数を数えるならstrlen() や sprintf() などの関数が用意されています。
関数の詳しい説明はここなんかにも載っています。
http://www.geocities.co.jp/SiliconValley-Bay/8490/
>しかも、ファイルからの入力だときちんと結果が表示されます。
>STDINには何か特別な仕組みでもあるのですか?
それはファイルの終わりを表すのがEOFだから。

戻る


「初心者のためのポイント学習C言語」 Last modified:2001.10.5
Copyright(c) 2000-2002 TOMOJI All Rights Reserved