問題タブ [eof]
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.
java - EOF文字javaなしでreadlineを使用する方法
私はJavaで簡単なサーバーアプリケーションを実装しようとしています。
それが行うのは、tcp / ipのメッセージを読み取り、それを文字列として保存することだけです。これが私のコードです。
私が抱えている問題は、メッセージにEOFが含まれていないように見えることです。それは私が私のものに翻訳している別の会社のプロトコルです、それは私がメッセージにEOFを追加することができないようにプログラムの目的です
プログラムを実行した場合に取得できる情報は次のとおりです。
次に、メッセージ本文を読み取る必要があるときにハングします。
私はこれまでJavaを使用したことがなく、自分のEOFを検出するために読み取られたバイナリソケットを書きたくありません。
x秒間読んでから戻る方法はありますか
助けてくれてありがとう。
PSはすでにC++でプログラムを正常にビルドしていますが、宛先のマシンが不明であるため、Javaに移植する必要があります。
c - Scanf while ループと EOF 処理
処理する必要があるテキスト ファイルがあります。形式は次のとおりです。
dd - 日 mm - 月 yyyy - 年 x,y,w,z - 気温
dd,mm,yyyy,x,y,z,w
このデータを処理するために配列を使用することは教えられていません。関数、if/else ステートメント、ループ (while/for)、および操作のみです。
各月のデータを個別に処理する必要があります。私のメインコードはwhile (scanf("%d,%d,%d,%f,%f,%f,%f", &dd, &mm, &yyyy, &x, &y, &z, &w) ==7) {}
ループに含まれています。
以下は私のコードです:
出力:
これが機能し、希望どおりに出力されることがわかりました(現在、各月の合計日数のみを印刷しています)が、先月は完全にスキップされています。ファイルの終わり (EOF) と関係があると考えています。if ステートメントで使用する次の「mm」値がないため ( currentmonth != mm
)、停止しており、12 月の追加の計算コードを処理できません。 .
これが機能する方法はありますか?私はそれを読みましたがscanf(EOF) = -1
、どちらで動作するはずcurrentmonth != mm
ですか?
データ テキスト ファイルにはエラーや重複エントリがなく、昇順になっていると見なすことができます。
どんな助けでも大歓迎です。
ありがとうございました!
c - C getchar エラー
最も無害な C プログラムを作成しましたが、期待した結果が得られません。私のエラーがどこにあるか教えていただければ幸いです。
これはコードです:
このファイルを入力に使用しています(コマンドラインリダイレクト)
名前 1 - コード 1:
04/03/2011 4.5 5.6 9.8 145
04/03/2011 6.5 4.6 9.9 185 名前2 - コード 2: 05/03/2011 4.5 5.6 9.8 135
05/03/2011 6.5 4.6 9.9 165
while
ループ中にエラーが表示されます(printf
代わりに試してみましたが、無限putchar
に印刷され、決して到達しないようです)-1
EOF
それだけだと思います。事前にあなたの助けに感謝します。
c - \n ファイル内の EOF の前の文字が問題を引き起こしています
アプリケーションではなく手動でファイルにデータを書きました。
私のコードは char ごとにデータを読み取り、それらを異なる配列に格納していますが、条件 EOF を挿入するとプログラムが動かなくなります。
調査の結果、私のファイルには EOF の前に 3 ~ 4\n
文字あることがわかりました。私はそれらを挿入していません。それらが私のファイルにある理由がわかりません。
append - Notepad++ と Regex を使用して各ファイルの末尾にテキストを追加します
100 個のファイルがあり、各ファイルの最後に行を追加する必要があります。
Notepad ++でこれを行う方法はありますか?
java - ネットワーク経由で送信するときにファイルの終わりを指定する方法
私のサーブレットは、FileInputStream.read() を使用してバイナリ ファイルから読み取ります。ファイルの終わりに達した場合、これは -1 を返します。次に、ファイルのバイトを応答ストリームを介してクライアントに送信します。
次に、応答ストリームを介してファイルの md5 ハッシュのバイトを送信したいと考えています。クライアントがどのバイトがどれであるかを知るために、ファイルの末尾をファイルの md5 から分割するにはどうすればよいですか? ストリームが機能しなくなるため、-1 バイトを送信できません。
実際のファイル内にある可能性がないことがわかっているファイルの終わりを知らせるために送信できる他のバイトはありますか?実際にファイルが終了する前にファイルの終わりを知らせることはできませんか?
sockets - UNIX ソケット: TCP ストリームが読み取りまたは EOF のために閉じられているかどうかを確認する方法は?
TCP ストリームを介してバイナリ データを読み取る単純なクライアントを作成しています。ファイルは部分ごとに送信されるため、次のようなループがあります。
読み取りは、受信したバイト数を返す recv() メソッドを介して行われます。アイデアは明らかに、TCP ストリームが開かれている限りデータを読み取ることですが、上記のアプローチは私にはうまくいかないようです。
他のアイデアはありますか?ストリームが閉じられるかEOFが発生するまでソケットから読み取るクリーンな方法は何ですか?
編集:上記のアプローチは正常に機能します。他の場所にバグがありました。
python - ノンブロッキングファイルの終わり
ノンブロッキング モードのファイルのエンド オブ ファイルはどのように検出されますか?
c - 複数のEOF(CTRL + Z)文字が必要なのはなぜですか?
少し背景として、私はCプログラミング言語にまったく慣れていないため、Kernighan&Ritchieマニュアルの第2版の演習のいくつかを実行しようとしています。標準ライブラリをもっと活用することで、特定の問題にもっと簡潔に対処できると思いますが、便利なコマンドのレパートリーをできるだけ本と同期させようとしています。
違いが生じる場合は、Tiny Cコンパイラ(TCC)を使用してWindows XP環境でソースをコンパイルし、XPコンソール(cmd.exe)内でバイナリを実行しています。
問題:の取り扱いEnd-of-File (EOF) characters
。問題を説明するために、小さなテストケースをまとめました。プログラムはEOF文字を(部分的に)処理しているようです。サンプルの入力/出力の問題をデモンストレーションしようとします。
入力例1:(abcd^Z[enter]
ここで、^ Z / CTRL + ZはEOF文字を表し、[enter]はEnterキーを表します。)
サンプル出力1:(Count: 4
追加の入力を待つか、^ C / ^ Z [enter]で適切に終了します)
サンプル入力2:abcd^Zefgh
サンプル出力2:(Count: 4
追加の入力を待つか、^ C / ^ Z [enter]で適切に終了します)
両方の例で述べたように、文字数は^ C / ^Z[enter]シーケンスが開始されるまで出力されません。開始されるまで、プログラムはより多くの入力を待機します(そして実際に処理します)。ただし、例2で説明したように、プログラムが最初の^ Zに遭遇すると、その入力行の処理を停止し、追加の入力を待つか、^ C / ^Z[enter]シーケンスが開始された場合に正しいカウントを返します。
プログラムがEOF文字を部分的にしか処理していない理由がわかりません。サンプル2の終わりを切り捨てる場合は、ループから完全に抜け出す必要があるように思われます。EOF文字を認識すると、プログラムが現在のカウントをすぐに出力して終了しない理由はありますか?
c++ - eofのためにC++でファイルを2回読み取りますか?
ファイルから数値を読み取り、3つの関数を適用して、別のファイルに出力します。
実行後、結果が複製されます。
私は同様の記事を読みましたが、それは1つの変数を読み取ることに関するものなので、実行可能ではないようです。
ループbreak
の最後にaを設定すれば、問題ありません。while
使わない方法はありますbreak
か?