問題タブ [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 でのバッファのフラッシュ
fflush()
出力ストリームであってもバッファをフラッシュするために使用すべきではありませんか?
それは何に役立ちますか?一般的にバッファをフラッシュするにはどうすればよいですか?
c++ - ファイルを強制的にディスクに書き込む
現在、ファイルをディスクに安全に書き込むために、ping/pong バッファリング スキームを実装しています。Linux/CentOS マシンで C++/Boost を使用しています。現在、ファイルの実際のディスクへの書き込みを強制するという問題に直面しています。ファイルシステム (ext3/ext4) / SO カスタム ルール / RAID コントローラ / ハードディスク コントローラのすべてのキャッシング ポリシーに関係なく、これを行うことは可能ですか?
プレーンな fread()/fwrite()、c++ ostream、または boost ファイルシステムを使用するのが最善ですか?
ファイルを単にフラッシュする (fflush()) だけでは、実際の書き込みが保証されないと聞いたことがあります。
c - C: 2 つのファイル ポインタを同じファイルに同期する
FILE *
互いに並行して操作するには、2 つのファイル ポインター ( ) が必要です。1 つは追加操作を適用するためのもので、もう 1 つは読み取りと上書きのためのものです。
あるポインターからファイルに追加して、他のファイルポインターによって認識されるようにする必要があります。これにより、他のファイルポインターは、この追加されたデータを正しく読み取って上書きできます。
データを同期するためfflush()
に、追加ファイルポインタでの使用が機能するように見えますが(少なくとも読み取りでは機能します)、これは私が望むものを達成する正しい方法であり、移植可能ですか?
ありがとうございました。
c - fflush を使用しても scanf はスキップされます
入力をscanf
受け付けない があります。変数が初期化されていない場合でも、値は自動的にゼロになります。はscanf
スキップされます:
プログラムを実行すると、すぐに「choice is 0」と表示されます。
上記のスニペットは、次のコードの drop() 関数から取得したものです。
することは役に立たfflush
ないようです。何か案は?
c - IO リダイレクトとバッファの問題、fflush と c
私のクラスでは、出力リダイレクトを備えたシェルを実装します。最初のコマンドが常に破損していることを除いて、出力リダイレクトが機能しています。
しかし、その後のすべてのコマンドは問題ないようです。この問題の原因となっているバグを見つけるには、どのような手法を使用すればよいですか?
うまく流せていないことが関係していると思います。ループ中に役立つかどうかを確認するために、コードの周りにそれを振りかけましたが(これはばかげていました)、そうではありませんでした。また、どこでも H<@?4 を見つけることができるかどうかを確認するためのコマンドのリストである OrderedIds リストを印刷しようとしましたが、初期化しても機能しませんでした。
ご協力いただきありがとうございます。
c - C、別の GCC、fflush() が機能しない?
私は初心者プログラマーです。浮動小数点数または文字を入力できない関数があります。gcc 3.4.2 では問題なく動作していましたが、4.7.1 にアップデートしたところ、正しく動作しません。最初の入力 a[0] でのみ機能します。「x」と入力すると、「間違った入力」と表示されますが、たとえば a[0] に「1」を入力し、次に a[1] に「x」と入力すると、入力 OK と表示され、 [1] に '1' を割り当てます。どうすればこれを修正できますか? ありがとうございました!
c - fseek(stdin,1,SEEK_SET) または rewind(stdin) を使用して、移植性のない fflush(stdin) の代わりに入力バッファーをフラッシュできますか?
「入力バッファに改行が潜んでいる」fflush(stdin)
というおなじみの問題に対処するための移植可能な方法ではないことを発見したので、使用する必要がある場合は次を使用しています。scanf
しかし、今日、cplusplus.com の fflushからメモした次の行に出くわしました。
fflush()...更新用に開いているファイル (つまり、読み取りと書き込みの両方のために開いているファイル) では、入力操作を実行する前に、出力操作の後にストリームをフラッシュする必要があります。これは、再配置 (fseek、fsetpos、rewind) または明示的に fflush を呼び出すことによって実行できます。
実際、私はそれを何度も読んだことがあります。そのため、サポートされている場合とscanf()
同じ目的を果たすために、次のいずれかを単純に使用できるかどうかを確認したいと思います。fflush(stdin)
PS rewind(stdin)
はバッファをフラッシュするのにかなり安全で実行可能のようですが、間違っていますか?
0 またはその場合に返される 1 以外のオフセットを使用できないため、fseek(stdin,0,SEEK_SET)
話している場合は間違いを指摘する必要がありました。stdin
ftell()
c - そのコードに fflush のない違いはありますか?
cpp referenceでは、fflush は次のように主張されています。
出力ファイル ストリームをファイルの実際の内容と同期させます。
確かに、意味がわかりません。そのコードで、fflush を取り出した場合、違いはありますか?
テストしましたが、少し違いがあるようですが、パターンが見つかりません。誰かが私のためにそれを詳細に説明できますか? 前もって感謝します。