問題タブ [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.
c - scanf と fgets の問題
これは、与えられた文字列を並べ替える宿題です。でソートしたい文字列の数をユーザーに求め、その数にscanf
基づいて配列を割り当ててから、 で文字列自体を取得していますfgets
。
文字列の数がハードコードされている場合はすべて正常に機能しますがscanf
、ユーザーが決定できるようにするために を追加すると、問題が発生します。コードは次のとおりです。
コンソールは次のようになります。
ループの最初の反復をスキップするため、配列の先頭に空の文字列が生成されます。私の質問は、なぜそれを行うのか、どうすれば修正できるのかということです。
"%d\n"
に渡されたフォーマット文字列でコンソールがどのように見えるかを次に示しますscanf
。
したがって、すべての文字列を入力できますが、文字列の最初のプロンプトが間違った場所にあります。
c - ユーザー入力の読み取りと文字列のチェック
Cの部分文字列の文字列で読み取ったものをどのようにチェックしますか?
私が次のものを持っている場合
一連の部分文字列の文字列を確認するにはどうすればよいですか?
文字の前の部分文字列をどのようにチェックしますか? たとえば、=
記号の前の部分文字列をどのようにチェックするでしょうか?
c - fgets() の配列サイズ
fgets を使用して行形式の .txt ファイルを読み取ります。最初の引数として配列を渡します。異なる行は配列内の異なる量のスペースを埋めますが、読み取られる行の正確な長さを知り、それに基づいて決定を下したいと考えています。出来ますか?
今、sizeof(second) を要求すると、明らかに 100 です。なぜなら、自分でそう宣言したからです (サイズを指定せずに「3 番目の」配列を宣言することはできません)が、ファイルから読み取った行の正確なサイズを取得する必要があります (配列全体に入力します)。
出来ますか?どうすればいいですか?
fgets - リードコマンド結果エラー(fgets)
ボタン付きのシンプルなココア アプリを作成しました。
ボタンをクリックすると、タイマーがトリガーされます。
そして、ここにタイマーがあります:
アプリを実行すると、「fgets エラー」が発生することがあります。「line == fgets(line, 4096, fp))」が失敗したように見えますが、理由はわかりません。
ここで時々ランダムに「fgetsエラー」が発生する理由を説明してもらえますか??
PS: コマンドを ("ls" から "ps" に) 変更しようとしました。ターミナルで、次の結果が得られました。
そして、タイマーの新しいコード:
そして、ログを取得しました:
そして、アプリを何度か実行しようとすると、「fgetsエラー」がランダムに出てきます...
php - fputs GET to curl
私はこのスクリプトを必要としていますがallow_url_fopen = On
、これは良い考えではなく、変更したいと考えていますcurl
。の実行方法について誰かが私を助けてくれれば幸いですfputs GET
。
php - Fgets() ですが、ファイルではなく文字列ですか?
私は次のことができます:
しかし、同じ機能をエミュレートできますが、(ファイル名を使用する代わりに) 文字列を使用する方法はありますか?
それが理にかなっていることを願っています。
c - C-fgets segfault
私は次のコードを持っています:
マークされている場所でセグメンテーション違反が発生します。別のプログラムに次のコードがあるので、問題が何であるかはまったくわかりません。
そしてそれはうまくいきます。私はそれがatoiでセグフォールトしていないことを100%確信しています。
これは他の人によって再現可能ですか、私はGCC4.4.5を使用してLinuxamd64を使用しています。コンパイルして警告を出力しませんでした。
リクエストされたので、get_intを呼び出すコードは次のとおりです。
それを呼び出すコードは次のとおりです。
したがって、コールスタックの最上位に到達しました。
c - 行を読み取るための C fgets と fgetc
長さについて仮定せずにテキスト行 (改行で終了) を読む必要があります。だから私は今可能性に直面しています:
fgets
最後の文字が改行であるかどうかを毎回使用して確認し、継続的にバッファに追加します- バッファを使用して
fgetc
、場合によっては各文字を読み取るrealloc
直観は、fgetc
バリアントの方が遅い可能性があることを示していますが、すべての文字を調べずにそれを行う方法がわかりませんfgets
(また、私の直観は常にそれほど良いとは限りません)。ラインは非常に大きいため、パフォーマンスが重要です。
それぞれのアプローチの長所と短所を知りたいです。前もって感謝します。
c - fgets の後にキーボード入力を取得する
私は一生、c 文字列と入力/出力に満足することはできません。
私のプログラムでは、単純に文字列を入力すると、次のコードで処理されます: (tmpstring と ch は既に定義されています)
着信入力については、ターミナルに次のように書き込みます。。/プログラム
move() の内部;
これを実行すると、さらに入力を求めることなく、無効な入力に直接入ります。stdin をクリアしてはならない (そしてそれは不可能だ) ことについてはあちこちで読みましたが、どうすればよいか本当にわかりません。while ループの 2 番目の部分で stdin を「ダンプ」しようとしたことは明らかです。最初の条件の後の && を || に変更しました。while ループで。変化なし。全体として、すでに fgets を使用した後、さらに入力を求めるにはどうすればよいですか?
*編集: コードを追加し、元の while ループを分離しました