問題タブ [strcmp]

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 投票する
2 に答える
438 参照

c++ - unordered_map::find の std::string と null で終了しない可能性のある文字配列との間の C++ カスタム コンパレータ

質問が奇妙に聞こえるかもしれませんが、std::string キーが最大サイズ 8+1 (null 終了の場合は 1) である unordered_map があるレガシー コードがいくつかあります。

find() 呼び出しのためだけに一時的な std::string に strcpy したくない char[8] 変数で文字列を受け取っています。

find() 呼び出しで直接 char[8] を使用できるように、何らかのコンパレータを実装する方法はありますか?

char[8] には "12345678" (null 終端なし) のようなものが含まれている可能性があるため、デフォルトの strcmp はおそらく機能しませんが、strncmp は機能しますか?

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

c - Cの「strcmpの引数2を渡すと、キャストなしで整数からポインタが作成されます」というエラーはどういう意味ですか?

C コードをコンパイルすると、次の 2 つのエラーが発生します。

警告: strcmp の引数 2 を渡すと、キャストなしで整数からポインターが作成されます

警告: 注: const char * が期待されますが、引数は int 型です

これが私のメインです:

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

c - strcmp関数の適切な使用?

strcmp関数の正しい使い方を教えてもらえますか?三目並べゲームを作成していますが、エラーが発生し続けます。

関数のパラメーターとして機能する2つのポインターを作成しましたstrcmp。1つはプレーヤーが入力する入力で、もう1つはプレーヤーが持つ動きの選択です。ただし、コードを実行しようとすると、上記のエラーが発生します。以下は私のコードの一部です:

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

c++ - strcpy と strcmp、何が間違っていますか?

ユーザーはいくつかの文字列を入力し、完了したら文字列としてスペースを入力する必要があります。コードは、入力された最長および最短の単語を返す必要があります。

strcmp は常に -1 を返します...何が間違っていますか?

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

php - なぜ「echostrcmp('60'、' 100');」PHP出力5で?

この関数に関するPHPのドキュメントは少しまばらで、この関数はASCII値を比較するので...

最後の例は私を混乱させています。なぜ正の数を出力しているのかわかりません。

  • 0のASCII値=48
  • 1のASCII値=49
  • 6のASCII値=54

  • '60'の合計ASCII値=(54 + 48)= 102

  • '100'の合計ASCII値=(49 + 48 + 48)= 145

strcmp()関数は、ASCII値と文字列の長さ「100」が「60」より大きいように見えても、「60」は「100」より「大きい」と言っています。

誰かが理由を説明できますか?

ありがとう

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

c - Cでstrcmpを適切に使用していない

このメソッドは、特定の小数に収まる最大の 2 の累乗を見つけるために作成しました。数値ストレージでの入力オーバーフロー エラーを回避するために、10 進数は char 配列形式になっています。2 の累乗は、float の pow(2, power) 形式で計算されます。8.000000 次に、この数値をメソッドに送信して、ピリオドと末尾の 0 を削除します。すなわち。8.000000 は 8 になります

たとえば、argv[1] に 20 を入力すると、次のように出力されます。

これのどこが間違っているのですか?また、for ループの終了条件を無視します。6 回目の反復の前にすべて 1 を出力し、6 回目と 6 回目の反復後にすべて -1 を出力することになっています。

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

c - 何ですか?printfを使用して文字列を出力する場合、strcmpは一致に対してゼロを返すことになっていますか(C)?

HWのポイントは、ファイルからこれを読み取る必要があるということです。

そしてこれを出力します:

したがって、私の問題は、表示されるはずの文字の出力に疑問符を付けることであり、strcmpは、それが機能する必要があるifステートメントに対してゼロを返しません(注:私は理解するのに役立つコメントとprintfがたくさんあります私が間違っているところ):

これは私の出力です:

私はCを初めて使用しますが、なぜその出力が得られるのか迷っています。ヒントをお願いします。

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

matlab - MATLABでYesまたはNoクエリを実行する

私はMATLABでスクリプトを作成しました。ここでは、WHERE句に基づいてテーブルから行と列を取得しています。これまでのところ、データベーステーブルからデータを取得することができます。

問題は、ユーザーが別の検索を実行して別のデータセットを取得できるようにしたいということです。

これは私が持っているこれまでの私のコードであり、スクリプトは「searchpdb」と呼ばれています。

'questdlg'を使用してみましたが、ユーザーに再実行のオプションを指定した後、テーブル内のデータの結果が表示されません。

私はこれを間違った方法で行っていますか、それとも別の効率的な方法がありますか?スクリプトを再度実行するオプションを別のスクリプトに含める必要がありますか?

0 投票する
0 に答える
1568 参照

c - 奇妙な結果を与える gdb の strcmp

strcmpGDB (gnu v 7.1-ubuntu) で、2 つの文字列が等しいかどうかを判断しようとすると、非常に奇妙な結果が得られます。p strcmp("hello","hello")私に結果を与えてい-145947168ます。

私が試したもの、strcmpまたはgdbstrncmpに戻ってきたものはすべて. -145947168私は何を間違っていますか?

編集(コメント内の関連する回答へのポインタについてCarlに感謝します):この質問への回答を参照してください:GDBで関数を評価する方法は?

どうやら、コンパイラが外部ライブラリから呼び出された関数を最適化する場合があり、GDB でアクセスしたい外部ライブラリの関数を呼び出すコードで関数を定義すると、それが利用可能になります。

これをコードに追加しました:

-DDEBUG -gそして、gdb デバッグ用にこれらのヘルパー関数をコンパイルできるように再作成しました。