Latest web development tutorials

Cライブラリ関数 - bsearchは()

C標準ライブラリ -  <stdlib.h>に含ま C標準ライブラリ- <stdlib.h>に含ま

説明

Cライブラリ関数void *型のbsearch(constのvoid *型のキー 、定数void *型ベース、size_t型をnitems、size_tのサイズ、int型(*比較例)(定数ボイド*、constのボイド*))オブジェクトのをnitems配列のバイナリ検索を実行するには基点すべき要素を見つけるために、配列、キーポイントを見つけるサイズは、配列内の各要素のサイズを指定します。

配列の内容は、昇順に対応する比較関数comparはに基づいている必要があります。

声明

ここで、()文bsearchは関数です。

void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))

パラメータ

  • キー- void *に要素の種類を見つけるためのポインタ。
  • ベース-ポイントvoidへの最初のオブジェクトの種類を見つけるために、ポインタの配列を実行します*。
  • nitems -配列内の基本要素の数を指摘しました。
  • サイズ-配列の各要素の大きさをバイト単位で指定します。
  • 比較例- 2つの要素を比較するために使用される関数。

戻り値

検索が成功すると、関数は、それ以外の場合はnullポインタを返し、一致する要素の配列へのポインタへのポインタを返します。 。

次の例では、bsearchは()関数が使用されている示しています。

#include <stdio.h>
#include <stdlib.h>


int cmpfunc(const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}

int values[] = { 5, 20, 29, 32, 63 };

int main ()
{
   int *item;
   int key = 32;

   /* 使用 bsearch() 在数组中查找值 32 */
   item = (int*) bsearch (&key, values, 5, sizeof (int), cmpfunc);
   if( item != NULL ) 
   {
      printf("Found item = %d\n", *item);
   }
   else 
   {
      printf("Item = %d could not be found\n", *item);
   }
   
   return(0);
}

それでは、以下になります上記のプログラムを、コンパイルして実行してみましょう:

Found item = 32

C標準ライブラリ -  <stdlib.h>に含ま C標準ライブラリ- <stdlib.h>に含ま