問題タブ [ungetc]
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 - InputStreamReader.markSupportedはfalseです
から文字を「未読」にする必要がありInputStreamReader
ます。その目的のために、私は使用mark
したかったのですreset
が、内部バッファや文字のキューを維持していないため、クラスにmarkSupported
戻ります。false
InputStreamReader
私は知ってBufferedInputStream
いますが、PushbackInputStream
文字が必要ですが、バイトベースでバッファリングするため、ここではどちらも適切ではありません。
Javaは、文字を読み取ることができないバッファ付き文字リーダーを提供していますか?実際、それをさらに制約させてください。私は(先読みの目的で)1文字だけ未読にする必要があります。私は本当に自分の先読みを維持する必要がありますか?
python - Pythonのungetc
Pythonの一部のファイル読み取り(readlines())関数は
、ファイルの内容を(リストとして)メモリにコピーします
大きすぎ
てメモリにコピーできないファイルを処理する必要があるため
、C getc() のよう
に、ファイルポインタを使用する必要があります(一度に1バイトずつファイルにアクセスするため)。
私が持っている追加の要件は
、C ungetc()のように
、ファイルポインタを前のバイトに巻き戻したいということです。
Pythonでこれを行う方法はありますか?
また、Pythonでは、 readline()を使用 して一度に1行を読み取ることができます
前の行を逆方向 に読む方法はありますか?
c++ - ungetcのC++バージョンはありますか?
ungetcのC++バージョンはありますか?
つまり、キャラクターをistreamに戻すことはできますか?
c++ - SolFSのこれらの関数に相当しますか?
アプリケーションの拡張機能を作成しています。私の拡張機能はSolFSを使用しており、それを使用してすべてのファイルトラフィックをSolFSにリダイレクトしたいと考えています。SolFSには必要なすべての機能に相当するものがないため、これを実現するには少し助けが必要です(正確には3つ)。
これは私が「変換する」コードです:http://pastebin.com/REh5MqSa
SolFSにあるもののリストは次のとおりです。
これは私が自分で簡単に作成できるものです:
そして、これで私はあなたの助けが必要になるでしょう:
SolFSによって提供される関数を使用して、ungetc、lseek、およびfileno(filenoはlseekで使用するためのもの)に相当するものを作成するにはどうすればよいですか?
c - 単純な getword での ungetc の使用を理解する
そのような getword の例に出くわしました。私はすべてのチェックなどを理解していますが、ungetc に問題があります。
がc
満たしif ((!isalpha(c)) || c == EOF)
、また満たさない場合while (isalnum(c))
-> それは文字でも数字でもありません - それungetc
を拒否しchar
ます。
だとしましょう'\n'
。
その後、取得しreturn word
ますが、配列に保存されていないため、返すことはできません。その後どうなりますか?
EDIT @Mark Byers - ありがとう、しかしその c は目的のために拒否され、無限ループで何度も条件を満たさないでしょうか?
perl - IO::Unicode文字を取得および取得解除するためのハンドル
UnicodeとIO::Handleで問題が発生したと思います。私が何か間違ったことをしている可能性が非常に高いです。IO :: Handleから個々のUnicode文字(バイトではなく)を取得および取得解除したい。しかし、私は驚くべきエラーを受け取っています。
ungetc()行からのエラーメッセージは、「unicode.plの21行目でUTF-8文字の形式が正しくありません(文字列の予期しない終わり)です。」\x{00c5}
「unicode.plの21行目でutf8にマップされません。」しかし、それはキャラクターの正しいヘクスであり、キャラクターにマップする必要があります。
16進エディターを使用して、A-RINGのバイトがUTF-8に対して正しいことを確認しました。
これは、2バイトの文字では問題になるようです。
最後のsayは'\xC5'(文字通り4文字:バックスラッシュ、x、C、5)を出力します。
そして、スカラー変数の代わりにファイルから読み取ることでこれをテストしました。結果は同じです。
これは、darwin-2level用に構築されたperl 5、バージョン16、subversion 2(v5.16.2)です。
そして、スクリプトはUTF-8に保存されます。それが私が最初にチェックしたことでした。
c - ungetc() の影響を元に戻す : fseek()、rewind()、および fsetpos() は「どのように」実行しますか?バッファーは毎回補充されますか?
ハッ!!どうやって全体を明確な質問に入れましょうか!!試してみましょう:
を使用して開かれたファイルがメモリにバッファリングされることはわかっていますfopen()
。効率と容易さのためにバッファを使用します。ファイルからの読み取り中、ファイルの内容は最初にバッファに読み取られ、そのバッファから読み取ります。ファイルへの書き込みの場合、コンテンツは最初にバッファに書き込まれ、次にファイルに書き込まれます。
しかし、 の前の呼び出しの効果を削除するfseek()
とどうなるでしょうか? それがどのように行われるか教えていただけますか?つまり、読み取り用にファイルを開き、それがバッファにコピーされたとします。現在、バッファ内のいくつかの文字を変更しています。多くの努力:fsetpos()
rewind()
ungetc()
ungetc()
についての説明は次の
ungetc()
とおりです。「ストリームで fseek、fsetpos、または巻き戻しを呼び出すと、以前にこの関数で戻された文字はすべて破棄されます。」-- すでにバッファに入れられている文字をどのように破棄できますか? 1 つのアプローチは、取り除かれた元の文字を「記憶」し、入れられた新しい文字をそれぞれ識別して元の文字に置き換えることですが、非常に効率が悪いようです。もう 1 つのオプションは、元のファイルのコピーをバッファーにロードし、ファイル ポインターを目的の位置に配置することungetc()
です。テキストストリームの場合、ストリーム内の未読文字の存在、つまり using
ungetc()
に挿入された文字は、の戻り値にどのように影響しますか?私の混乱は、次の行についてと、このリンクについて( SOURCE )からftell()
生じますftell()
ungetc()
ftell
「テキスト ストリームの場合、数値は意味をなさない可能性がありますが、後で fseek を使用して位置を同じ位置に復元するために使用できます (まだ読み取り待ちの ungetc を使用して戻された文字がある場合、動作は未定義です)。」
- 上記の段落の最後の行に注目する
pending of being read
と、「ungetc() で取得した」文字が破棄されることに何の関係があるのでしょうか。を使用してストリームに入れられた文字を読み取るたびに、読み取り後ungetc()
に破棄されますか?
c - ungetc 関数を再評価する混乱
このプログラムの仕組みを理解していませんか?
プログラムの出力は、最初に入力された文字が 5 回印刷されます。
SO の投稿によると、putc と ungetc の違いは何ですか? ungetc
入力バッファに何かを戻します。
したがって、このプログラムでは、最初の反復中にscanf()
キーボードからの入力を受け入れてprintf()
表示しungetc()
、同じ文字を入力バッファーにプッシュバックします。
しかし、2回目の反復では入力が受け入れられないためprintf()
、入力バッファにプッシュされた文字が出力されると推測していますungetc()
。
誰かがこのプログラムがどのように機能するかを明確に説明できますか?