2016-10-22 19 views
1

人々は通常getcharをfgetcまたはgetcで置き換えるwhile(getchar()!= ' n');それは入力バッファまたはオーバーフローをクリアすることになると

while(getchar() != '\n') 

に言及します。

fgetcまたはgetcでも動作します。たとえば、次のように

while(fgetc(stdin) != '\n') 

while(getc(stdin) != '\n') 

人々は常にgetcharを使用する理由、特定の理由がありますか?

fgetcまたはgetcを使用することに不利な点はありますか?

答えて

2

人々は、標準入力から読むときにのみgetcharを好む。ファイルからの読み込みが必要なときに、getc/fgetcに置き換えない理由はありません。

入力ストリームに'\n'が存在しない場合に無限ループにつながる可能性があるため、この構成は危険です。例えば、エンドユーザははCtrl +DまたははCtrl +Z、あなたは終了決してようwhileループでプログラムを使用してストリームを閉じた場合。 getcharを使用し、あなたがstdinから読んでいる知っている場合は

int ch; 
while ((ch = getchar()) != '\n' && ch != EOF); 
0
  • :あなたは入力を無視するループでEOFをチェックする必要があります。
  • 任意のファイルポインタから読み取る場合は、getcを使用してください。
  • ある種の理由から、マクロではなく実際の関数を呼び出す必要がある場合は、fgetcを使用してください。 (私にとっては、その理由はあまりにも曖昧でfgetcを呼び出すことはないので、getcを使用することをお勧めします)
関連する問題