ループ内で入力を取得しようとしています。入力が停止したことをどのように知ることができますか? たとえば、私が持っていint input
て、ユーザーが望む限り入力を取り入れているとします。ただし、各エントリの前にプロンプトを表示するわけではありません。ユーザーにこれ以上入力があるかどうかを尋ねているわけではありませんし、入力の数を事前に知っているわけでもありません。
入力の取り込みを停止するにはどうすればよいですか?
これが私が今まで持っているものです。
while(1){
scanf("%d",&input);
if(conditionFulfilled)
index=0;
if(index)
printf("%d",input);
}
ここでは、条件を満たさない限り、すべて印刷します。しかし、条件が満たされると、入力を取り続けますが、出力しません。入力が停止したことをどのように知ることができますか?
私は今、自分自身をより明確にしようとします。
私がやりたいことは、ユーザーに数字を入力し続けてもらいたいということです。今はそれらの数字を同じ順序で印刷したいのですが、ユーザーが50を超える数字を入力したら、それとその後の数字を印刷したくありません.
また、この上記の条件が達成されたら、ユーザーが入力を停止することを望んでいません。また、ユーザーがこれ以上番号を入力したいかどうかを毎回尋ねることができますか? 私はただ彼に入り続けてもらいたいだけです、そして彼が終わったら。目的の印刷出力が得られるはずです。
しかし、ユーザーがすべての入力を完了したかどうかをどうやって知ることができるのかわかりません。
newLine は文字に格納されますが、整数入力には格納されないため、入力を文字として格納できると考えていました。すなわちscanf("%c",&input)
。\n
文字を保存しますがscanf("%d",&input)
、すべての newLines を無視する場合は、2 つの連続した改行をチェックできるようになり、停止します。
うーん、それが正しい方法かどうかはわかりませんか?
また、入力してから Enter キーを押すと、 4
4 が入力ストリームにあり、enter
両方とも入力ストリームにあるとします。この入力ストリームを newLine 文字でクリアし、変数に 4 を取り込むにはどうすればよいでしょうか? 今はもっと理にかなっていると思いますか?
編集: 上記の解決策は機能しないと思います。入力を取り込んでいるchar
と処理できない22
ため、最初の 2 つだけを取得し、もう 1 つをバッファに残すだけです。