問題タブ [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++ - バッファではなくストリームをフラッシュするのはなぜですか?
これが非常にばかげた質問になることはわかっていますが、「バッファ」システム全体に関する非常に多くのドキュメントを読んだ後、なぜ人々がストリームをフラッシュするのにバッファをフラッシュしないのか理解できません。
私は人々がこのようなことを書いているのを見てきました:
それで、私たちは実際に何かをバッファに保存するのに、実際に何かを保存し、フラッシュする必要があるバッファを直接フラッシュするのではなく、関連するストリームをフラッシュするのはなぜだろうか.私が言ったように、それは同じことになるので、気にしないでください......)
たとえば、fflush(buffer)
.Why?のようなものは記述できません。
c - fflush(stdin) と flushstdin() の違い
fflush(stdin)
との使用の違いは何flushstdin()
ですか? 私が知っている唯一の違いは、を使用する前にその void を記述する必要があることですが、そのflushstdin()
理由はわかりません。
と
私は初心者です!どのコードが最適ですか? それとも等しいですか?
c - フラッシュ後も stdout バッファリング
文字をバッファリングせずにパイプstdin
することを目的とした単純なCプログラムを作成しました。stdout
ただし、このプログラムは、への呼び出しにもかかわらず、改行まで文字をバッファリングしているようfflush
です。なぜこれが起こっているのですか、どうすれば修正できますか (可能な場合)?
c - VS2013 および VS2015 での fflush(stdin)
ライブラリを含めました<stdio.h>
が、以下のコードは VS 2015 (および GNU GCC) で無限ループにつながります。
しかし、以前のバージョンの VS (2013 年) でコンパイルすると、まったく問題なく動作しました。fflush
そのため、VS 2015 ではこの機能が機能しなくなったのではないかと疑っています。
申し訳ありませんが、私はC言語が初めてです。したがって、私が学んだことによると、使用fflush(stdin)
は実際には悪い考えであり、この関数は未定義の動作としてマークされています。
しかし、ここに私が興味をそそられている本当の質問があります:
fflush(stdin)
VS2015 で動作しなくなったのはなぜですか?fflush(stdin)
コードに含まれる do-while ループで使用できる「関数」を実装する方法は他にありますか (無限ループを防ぐため)。
ありがとうございました
c - ユーザー入力をループする
ユーザーが文字列を入力し続けることができるループを設定しようとしています。どこが間違っているのかわかりません(Cプログラミングは初めてです)
これは私が書いたコードです:
これは私が得ている出力です:
前もって感謝します。
c - 表示されたテキストを標準出力から削除するにはどうすればよいですか?
テキストを表示するマクロを作成し、その後 stdout をフラッシュします。問題は、テキストが新しいものよりも長い場合に、古い印刷テキストを強制的に消去する方法です。
例 : その後 50 文字の文字列を印刷しようとすると、すべてのテキストを上書きし、テキストを 25 文字で書き直す必要があります。2 番目のテキストの方が短いため、常に最初のテキストの一部が常に印刷されます。
\r
また、各行の最後に挿入する必要があります。マクロを追加するにはどうすればよいですか?
結果:
期待される結果:
c - C: ユーザーが fflush(stdin) を使用して文字を入力した場合、プログラムはユーザーに再確認しません。
明らかに、コード全体をここに掲載するつもりはありません。非常に長いためです。結局のところ、これは税計算ツールです。この問題は、ユーザーからの入力として double 値を必要とするすべての scanfs に適用されます。基本的に、タイトルが示すように、私のプログラムは、文字であっても別の値を入力するようにユーザーに求めません。私はまだコースの1年目であり、プログラミングについてすべてを知っているわけではないので、私を許してください.
c - Linux の fflush 関数と同じものは何ですか?
Linux のマニュアルでは、このfflush
機能を使用しないことを推奨しています。
while( getchar() != '\n'
それで、が と同じ役割を果たすことがわかりましたfflush(stdin)
。
例えば)
私の試用コード:
上記のコードを Linux (Ubuntu) で実行すると、結果は何もありません。は文字列に含まれていないため\n
です。stdout
したがって、バッファを空にしてそれらを出力する必要があります。
奇妙な現象は、どちらかgetc(stdout)
またはを使用すると、結果がうまく印刷されることgetc(stdin)
です。
なぜ両方がうまくいっているのかわかりません。私は、キーボード バッファーとモニター バッファーgetc(stdout)
を考えているので、うまく動作するはずだと思っていました。stdin
stdout
c - getchar() を使用した後、無限 for ループ C プログラムで fflush(stdin) を使用して stdin をクリアできません
私はCプログラミングを始めたばかりで、yまたはn文字のみを受け入れるプログラムを作成しようとしているときに、それに遭遇しました
このコードを実行し、Y/y または N/n 以外の文字を入力すると、最後の printf ステートメント (Yes/No と答える必要があります) が出力として 2 回表示されます。enter、つまり「\n」を別の文字と見なすため、これが発生していることを理解しています。fflush を使用しても、無限ループになるため役に立ちません。最後のステートメントが一度だけ表示されるようにするには、他にどのように変更できますか?