問題タブ [bsearch]
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 - 文字列の配列で bsearch を使用する際の問題
C の文字列の配列に対して c の組み込み bsearch を使用しようとすると、混乱する動作が発生します。コードは次のとおりです。組み込みの strcmp を使用して文字列の配列を検索できることは知っていますが、なぜ機能しないのかわからなかったので、デバッグ目的で myStrCmp を含めました。
Alabama を検索するためにこの関数が呼び出されたときの出力の一部を次に示します。
ご覧のとおり、検索の過程で bsearch が訪れた場所には有効な文字列が含まれているはずですが (bsearch を呼び出す前に確認したように)、その場所で char * を出力しようとすると、出力はガベージになります。誰かが私の間違いを見ることができますか? ちなみに、最後のパラメーターを次のように設定して bsearch を呼び出すと、同じ悪い動作が発生します (ただし、明らかにそれを厳密に追跡することはできません)。
ありがとう!
c - bsearch と lfind からインデックスを決定していますか?
lfind と bsearch が見つかった要素へのポインターを返した後、配列内の要素のインデックスを取得しようとしています。私はこれまでのところこれを持っています:
ここで、found は関数が検出したアドレスであり、ベース アドレスは要素 0 のアドレスです。ただし、コンパイラは次のエラーを返します。
cvector.c:150:28: 警告: 型 'void *' のポインターが減算で使用されています cvector.c:150:4: 警告: return はキャストなしでポインターから整数になります
私は何をしますか?
c - bsearch() でアイテムが見つからない
次のコードの bsearch() がリストに項目「getwidth」を見つけられない理由を誰か教えてください。いくつかのコンパイラを試しましたが、どれも動作しないため、コードのバグに違いありません。しかし、私は本当に何が悪いのかわかりません。bsearch() に渡されたコールバックは常に != 0 を返しますが、それでも 5 回しか呼び出されず、すべての項目を反復しませんでしたが、bsearch() によって NULL が返されます。何故ですか?
コードは次のとおりです。
そして、このプログラムが生成する出力は次のとおりです。
実際には数行しかないのに、なぜ機能しないのか本当にわかりません。誰かがこの奇妙な行動に光を当てることができますか? ありがとう!
c - ループ内でキーを変更する bsearch
とにかくこのようなことをすることはありますか?
問題はキーがインクリメントbsearchされることですが、それでも数字の 50 を検索します。キーの引数bsearchがconstant pointer. 検索する前にすべてのキーが配列に格納されている場合に機能することはわかっています。ただし、これは私のアプリケーションには適していません。どんな助けでも大歓迎です。
c - qsort および bsearch 関数...「ポインター」
関数を作成するときに、
その名前をqsortandのパラメーターの 1 つに渡すだけでbsearch、これらの関数はどのようにして上記の本質的にランダムな単語を認識し (関数ポインターであると明示的に述べたことはなく、実際の関数であるため)、それをパラメーターとして使用するのでしょうか? qsortandbsearchまたは何かの関数宣言に明示的なキャストはありますか?
c - bsearch の呼び出し時に「エラー: 無効な初期化子」を取得する
私は構造体を持っています:
そしてインスタンスの配列:
配列が作成されたら、次を使用して並べ替えますqsort
そして、これは期待どおりに機能しています。特定のアイテムの配列を検索するメソッドを実装しようとしていますが、ここで行き詰まっています
gccコンパイラは次のメッセージを返しています。
p_CONNECT.c: 関数 'FindDataByKey' 内:
p_CONNECT.c:87: エラー: 無効な初期化子
make: 最後のコマンドのエラー コードは 1 です。
オンラインCompareDataByKey);
私が書いたコードのコンテキストでこのエラーの意味を説明できる人はいますか?
c - bsearch() で char 配列を検索するときに要素の位置を見つける方法はありますか
初めて bsearch() を使用し、要素の位置を見つける方法や要素を返す方法があるのだろうかと思っていました??
bsearch() が機能していて、ポインターを返しますが、これからはそれを使用して要素を印刷できません。
c - C で bsearch を使用したセグメンテーション違反
私のプログラムは、bsearch() を使用する行でセグメンテーション違反を起こします。ここで何が間違っていますか?これが私の比較関数です。私は qsort に同様のバージョンを使用していましたが、今は bsearch にこれを使用する必要があります:
player_t 型は、一連の異なるメンバー (nameLast、nameFirst など) を持つ単なる Struct です。bsearch() 引数の何が問題なのかわかりません!
arrays - bsearch に一貫して等価一致を行わせる方法はありますか?
docs のサンプル配列と同様に、等値を渡すと一貫性のない結果が返されます。
ドキュメントが示すように、正しい結果を得ることができます>=; ただし、以下も得られます。
これは、特に を探しているときに必要なものではありません6。一貫した結果を返すにはどうすればよいですか?