2012-04-17 14 views
1

私はすべての入力をコマンドラインから取得し、それをリンクリストに入れようとしています。コマンドラインから 番号はここで、このフォーマット0-1 2-3 4-9 ETCC である私は2つの変数に数字のペアを格納するためにやったことです:今コマンドラインですべての入力に対してscanfを続けます。 Cプログラム

scanf("%d-%d", &a, &b); 

、このscanfの文がされ私の質問は:ループの状態は何ですか? すべての入力が終了するまでscanfを続けたいと思います。

ありがとうございます。

+1

「すべての入力が完了するまで」を定義できますか?これに答えると、あなたのループ状態が得られます –

答えて

3

scanfの有名な特徴ではないにもかかわらず、文字列以外のデータを読み取るときに入力バッファにデータが残ることがあります(たとえば、int)。ここをクリックしてください:Leave data in input buffer

これを試してみてください:

do 
{ 
    int x = scanf("%d-%d", &a, &b); 
}while ((x != EOF) && (getchar() != '\n')); 

あなたがEOFとscanf出力を比較する必要があります。そして、最も重要なのは、入力バッファーにscanfで残っている'\n'をフラッシュする必要があることです。

+0

そしてこのEOFはどのように達していますか?行ごとに1対の数値を入力しても、何も停止したくない場合は改行を続けてください。 – Tudor

+1

@ Tudor 'Ctrl-D'? –

+0

@ Tudor、もう一度これをしてください。 –

関連する問題