問題タブ [fgets]
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.
ssh - 「ssh」の popen() で fgets() を呼び出すと、呼び出しプロセスの stdin の先頭がフラッシュされます (ptty 問題)
私はこれを最小限のテストケースに落とし込みました。これまでのところ、これは ssh のパイプで発生する疑似端末に関連する問題であると判断できました。'-t -t' を ssh 呼び出しに追加すると、問題が発生するために fgets() への 2 回目の呼び出しが必要になるという点で改善されました。sshコマンドのstderr出力が何らかの形で問題に関与していると思われます。今のところ、実行するsshコードでstderrをstdoutにリダイレクトしました。「tcgetattr: Invalid argument」エラーが問題の一部であるかどうかは疑問ですが、それを取り除く方法がわかりません。-t -t が存在することから来ているようです。-t -t は正しい方向に進んでいると思いますが、何らかの方法で stderr の疑似端末をセットアップする必要があり、おそらくテストは適切に機能しますか?
メイクファイル:
test.c ソース ファイル:
これは、通過する方法を実行していることを示しています。
これは、失敗した方法で実行されていることを示しています。
python - C で Python の strip() 関数を模倣する
私は最近、C で小さなおもちゃのプロジェクトを開始し、python 文字列オブジェクトの一部である strip() 機能を模倣する最良の方法について頭を悩ませています。
fscanf または sscanf を読み回すと、最初に検出された空白まで文字列が処理されることがわかります。
fgets は、まだ改行が残っているため、役に立ちません。strchr() を使用して空白を検索し、返されたポインターを明示的に '\0' に設定しようとしましたが、うまくいかないようです。
c - fgets()は常にcharバッファーを\ 0で終了しますか?
fgets()は、EOFにすでに到達している場合でも、常にcharバッファーを\ 0で終了しますか?そのように見えますが(ANSI K&Rの本に示されている実装では確かにそうです)、確かにお願いしたいと思いました。
この質問は、gets()などの他の同様の関数にも当てはまると思います。
編集:「通常の」状況では\ 0が追加されることを知っています。私の質問は、EOFまたはエラー状態を対象としています。例えば:
c - gets 関数が非常に危険なため、使用すべきではないのはなぜですか?
GCC で関数を使用する C コードをコンパイルしようとすると、次のgets()
警告が表示されます。
(.text+0x34): 警告: `gets' 関数は危険なので使用しないでください。
これはスタック保護とセキュリティに関係していることを覚えていますが、正確な理由はわかりません。
この警告を削除するにはどうすればよいですか?また、使用に関する警告が表示されるのはなぜgets()
ですか?
そんなに危険ならgets()
、なぜ私たちはそれを取り除けないのですか?
c - Cで行全体ではなくデータを取得する方法は?
今私は使用します:
次のような入力から行を取得します。
「\n」までの行全体ではなく、「city=Boston」、「name=Bob」などのように別のペアを提供する C で何か他のものを使用できますか?
c++ - C++ の http サーバーがすべてのファイルを正しく送り返していない
私は C++ で HTTP サーバーに取り組んでいますが、現在はテキスト ファイルの要求に対して機能しますが、jpeg などを取得しようとすると、ファイルの一部しか送信されません。問題は、 fgets(buffer, 2000, returned_file) を使用すると、実際にバッファに入れるよりもファイル位置インジケータをインクリメントするように見えることです。なぜこれが起こるのでしょうか?すべてのコードを以下に示します。レスポンスコードが200のときに発生するwhile(true)ループで問題が発生しています。
c - Cでファイルを1行ずつ読む方法は?
1 行に 1 つずつ、最大 100 個の IP アドレスを含むテキスト ファイルがあります。各アドレスを文字列として "list" という配列に読み込む必要があります。まず、"list" は 2 次元の char 配列である必要があると想定しています。各 IP アドレスの長さは 11 文字で、'\0' を含めると 12 文字になるため、次のように list を宣言しました。
char list[100][12];
次に、fgets を使用してストリームを読み取ろうとします。
文字列が正しく読み取られたかどうかを確認するために、出力を試みます。
プログラムを実行した後、何かが間違っていることは明らかです。初心者なのでよくわかりませんが、ファイルの読み方が間違っているのではないかと思います。エラーはありません。コンパイルはできますが、奇妙なアドレスが 2 行に出力されます。
編集:
fgets コードを次のコードに置き換えました。
5 つの文字列を出力するようになりましたが、これらはメモリからの「ランダムな」文字です。
php - PHP で fsockopen() と fgets() を使用しているときに、while() ループがストールしないようにするにはどうすればよいですか?
これは、小さな PHP IRC ボットの基本的な接続コードです。問題は、while() ループが、IRC サーバーからデータを受信するまで fgets() を超えて進行しないように見えることです。IRC サーバーがまだデータを送信していないかどうかに関係なく、while() ループを繰り返します。これは可能ですか?
c - 行内にテキストを挿入する
バッファ内の新しい行とともに完全な行を提供するために fgets() で使用しているファイル ポインタがあります。1文字を置き換えて、改行の前に別の文字を追加したい。それは可能ですか?例えば:
これはコードです:
ご覧のとおり、ここで新しい行を置き換えています (行の例は上に表示されています)。上記で行っていることの代わりに、テキストを挿入して新しい行を保持したい。