問題タブ [fflush]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# で C の fflush() に似たものはありますか?
私の問題は次のとおりです。
ユーザーはアドレスを検索できます。何も見つからなかった場合、ユーザーにはメッセージボックスが表示されます。ENTER を押して閉じることができます。ここまでは順調ですね。SearchAddresses() の呼び出しは、ENTER を押して開始することもできます。そして、ENTER (メッセージボックスを非表示にする) ごとに新しい検索が開始されるため、ユーザーは無限ループに陥っています。
コードビハインドは次のとおりです。
そしてここにxamlコード:
C# でこの無限ループを処理するにはどうすればよいですか?
c - 停止したプロセスのscanfの内容をクリアするには?
私は fork を使用しており、子プロセスは for ループ内で scanf を使用してユーザーからデータを 10 回読み取ります。ただし、親プロセスは、4 秒間のスリープ後に SIGSTOP シグナルを子プロセスに送信し、ユーザーから値を読み取り、それを出力します。ただし、ユーザーがデータを入力したが、子プロセスの scanf で Enter キーを押さなかった場合、親プロセスは子プロセスで書き込まれたデータを読み取りますが、出力します。これが起こらないようにするにはどうすればよいですか。
たとえば、出力は次のようになります。
a
0: あ
b
1:う
ac (ここで Enter キーを押して SIGSTOP を待つことはしません)
chldが停止しました
tr (親のデータを入力し、Enter キーを押した)
ac2: トラ
c
3: c ...など
では、tr を入力した後、親が ac を表示するのはなぜですか?
c - fflush() 関数が stdin で機能しない
このばかげた質問で申し訳ありません。ユーザーに年齢と名前を入力してから、年齢と名前を画面に出力するように求めるCプログラムがあります。これは本から読んだ私のエクササイズです。
これはプログラムです:
最初に余分な文字を入力するscanf()
と、プログラムが終了し、余分な文字が次の文字に割り当てられますscanf()
次に、コードを変更し、名前付きの関数を追加し、その関数内でclear_buff()
使用して、ストリームの残りの文字を読み取ります。コードは期待どおりに機能します。fgets
clear_buff()
私の質問は、なぜfflush(stdin)
このプログラムで働かないのですか?
この本には、fflush
関数がストリーム上のバッファリングされたデータをクリアすると書かれています.I
fflush()
/ Oストリームを操作する場合、関数はC標準関数であることを知っています。
input - cで複数の入力を受け取った入力ストリームをクリアするには?
TCP プロトコルを使用してクライアント サーバー プロジェクトを作成しているため、クライアント コードには、サーバーからの write() を待機する read() を含む while ループがあります。
これは私が実際に尋ねている質問とは無関係だと思いますが、これが私の問題の原因です。つまり、クライアントがサーバーからの write() を待っている間、ユーザーは端末で文を入力して、入力バッファにスタックされているため、クライアントが最終的に write() を受け取り、read() から先に進むと、改行文字が見つかるまですべての文字をクリアする通常の方法では入力バッファをクリアできません。
ユーザーが待機中に多くの文を入力し、Enter キーを複数回押したためです。
内容に関係なく、入力ストリームを完全にクリアする方法はありますか?
私がこれまでに見つけたのは、私が使用できるということだけfflush(stdin)
です。型にはまらないものの、私には機能しますが、使用できない場合もあります。
また、入力ストリームの終わりを次のように確認してみました。
しかし、無限ループに陥ります。また、read() の後の改行を無視する scanf() を使用してみました。
すべてがこのバッファに移動されるように、これも機能せず、最後に入力された文の最初の単語だけがそこに格納されます。
最後に、 fgets() をいじってみましたが、運もありませんでした。
PS read() 呼び出しの前に標準入力ストリームを完全に無効にして、すぐに再度有効にする方法はありますか?
編集:アーカイブの目的で、この時点で実際にプログラムをフォークして、入力をスキャンし続け、最初に述べた標準的な方法で即座にクリアしました。それでも、何が入っていても入力バッファを完全にクリアする方法があるかどうか知りたいです。