問題タブ [scanf]

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.

0 投票する
5 に答える
7305 参照

c - 一部のプラットフォームで sscanf + c99 が動作しない?

シンプルな Hello World! をコンパイルすると ローカルの Debian lenny x64 で sscanf 関数を使用するプログラムが動作します。しかし、CentOS x86 を実行しているサーバーに同じプログラムをアップロードすると、機能しません。sscanf を使用しない場合、プログラムは両方のコンピューターで動作します。

gcc -std=c99 -O2 -pipe -m32

sscanf を使用して -std=c99 を指定せずにコンパイルすると、両方のコンピューターで動作します。

gcc -O2 -パイプ -m32

CentOS x86 での sscanf と c99 の問題は何ですか? -m32 フラグを指定してコンパイルすると、すべての Linux で動作すると思いましたか? (CentOS サーバーへのアクセスが制限されているため、エラー メッセージにアクセスできません。)

0 投票する
6 に答える
1769 参照

c - C - fscanf() を取得して、読み取ったものが数字のみで文字がないかどうかを判断する方法

csv があり、各値が整数であると想像してください。したがって、最初の値は INTEGER100です。

fscanf() にこの行を読み取らせて、それが整数のみであるかどうかを教えてもらいたいです。したがって、それは合格します100が、 で失敗し100tます。私が仕事を得ようとしてきたのは「%d」です。カンマは CSV の区切り文字です。したがって、関数全体は

残念ながら、これは「100t」では失敗し、「100」では機能し、「t」では機能します。したがって、とを区別していないだけです100100tもちろん、これらの数字の後にはすべてコンマが続きます)

0 投票する
2 に答える
976 参照

c - while ループ内の scanf segfaults およびその他のさまざまな異常

いくつかの異なるエラーが発生していますが、実際には再現できないようです (この時点での segfault を除いて)。このコードは、約 10 分前には問題なく動作していましたが、printf コマンドを無限ループさせ、現在は上記の行でエラーを検出しています。私が変更scanf(">%s",command);したのは、現在のものだけです。コマンド変数を配列に変更すると機能します。明らかにこれは、ストレージがそのために確保されているためです。

  1. 私は誰かにポインタをmallocする必要があると言ったことで起訴されました*(しかし、それは通常、配列にするなどの問題を解決するようです)
  2. 私が入力しているコマンドは "magic" (5 文字) であるため、異常なスタック オーバーフローは発生しません。
  3. Mac OS X 10.6 で最新バージョンの xCode (非 OS4) と標準の gcc を実行しています。
  4. これは私がプログラムをコンパイルする方法です:gcc --std=c99 -W sfs.c

何が起こっているのかを理解しようとしているだけです。これは私が二度と見る必要のない学校のプロジェクトのためのものなので、上司を泣かせる初心者向けの作業をコード化するだけです:)それに対するいくつかの修正、およびそれに対する何らかの修正がある場合、その修正が機能する理由。

0 投票する
3 に答える
1636 参照

c++ - C ++:単純な正規表現で解析するか、sscanfを使用する必要がありますか?

のような文字列を解析する必要がありますfunc1(arg1, arg2); func2(arg3, arg4);。これはそれほど複雑な構文解析の問題ではないので、flex/bisonまたは同様のユーティリティに頼るのは避けたいと思います。

私の最初のアプローチは、POSIXCregcomp/regexecまたはC++のBoost実装を使用することでしたstd::regex。次の正規表現を作成しましたが、機能しません(理由については後で説明します)。

1グループは識別子をキャプチャし、グループ4..n-1はグループによってキャプチャされる最後の引数を除いて引数をキャプチャすることを目的としていることに注意してくださいn

この正規表現をに適用するとfunc(arg1, arg2, arg3)、得られる結果は配列であると言い{func, arg2, arg3}ます。入っていないのでこれは間違ってarg1います!

問題は、標準の正規表現ライブラリでは、サブマーキングは最後の一致のみをキャプチャすることです。つまり、たとえば正規表現を"((a*|b*))*"適用した場合"babb"、内部一致の結果は次のようにbbなり、以前のすべてのキャプチャは忘れられます。

ここで私を悩ませているもう1つの点は、エラーが発生した場合、入力が拒否されたときのパーサーの状態に関する情報がほとんど提供されないため、どの文字が認識されなかったかを知る方法がないことです。

だから私はここで何かが欠けているかどうかわかりません...この場合sscanf、代わりにまたは同様のものを使用する必要がありますか?

私はC/C ++標準ライブラリを使用することを好むことに注意してください(そしておそらくブースト)。

0 投票する
1 に答える
33109 参照

c - double の sscanf

これは単純な問題ですが、私には見えません:

ddouble 値が含まれていないのはなぜ8.649292ですか?

0 投票する
5 に答える
3302 参照

c - \n区切られたファイルから文字列を読み取る方法

戻り区切りファイルを読み込もうとしています。フレーズだらけ。

各フレーズを文字列に入れようとしています。

問題は、ファイルを次のように読み込もうとすると、

文字列には1つの単語しか含まれていません。スペースにぶつかると、文字列の読み取りを停止します

0 投票する
2 に答える
1059 参照

scanf - 条件が満たされたときに fscanf に行を再読み取りさせるにはどうすればよいですか?

while( fscanf( tracefile, "%s ", opcode ) != EOF ){何とか}

場合によっては、コード内の特定の条件が満たされたときに、fscanf に行を再読み取りさせる必要があります。これは可能ですか?どうすればいいですか?

ありがとう。

0 投票する
1 に答える
1599 参照

c - Cプリプロセッサを使用してscanfの文字列リテラルを構築しますか?

sscanfC99 でのバッファ オーバーラン防止に役立つ文字列リテラルを作成しようとしています。目標は次のようなものです。

明らかな「手動」ソリューションは次のようなものです。

ただし、バッファー サイズが 16 の場合に "%15X" を自動的に生成する方法をお勧めます。

提案?

0 投票する
4 に答える
1777 参照

c - "while(fscanf != EOF){blah}" 内で、次の fscanf が EOF を返すかどうかを判断する方法は?

while(fscanf != EOF) ループでコードを実行しています。ただし、fscanf の実行が終了しても、いくつかの条件が満たされるまでそのコードを実行し続ける必要があります。コードをコピーして while(fscanf) ループの外側に貼り付け、グローバル変数のみを使用できると思いますが、それは面倒です。確かに、誰かが以前にこのようなことに遭遇し、よりクリーンなソリューションを持っています。

0 投票する
1 に答える
1811 参照

objective-c - Objective-Cのscanfスペースの問題

私はObjective-Cを学んでいますが、私の人生では、なぜこれが起こっているのか理解できません。コードが次の場合にユーザーが入力した場合:

何らかの理由で、このコードを台無しにします。

ユーザーがたとえば「E10」と入力すると、ループは終了しますが、「有効な演算子を入力していません」と出力されます。コードを次のように変更すると:

突然、この最後の行が印刷されません。これを修正する%cの前のスペースについてはどうですか?