C 語言中用bsearch 實現查詢操作

2021-07-15 14:44:20 字數 1136 閱讀 6982



c語言中可以用bsearch()實現二分查詢。同qsort()一樣,bsearch()也包含在庫中,且同樣要自定義比較子函式。其原型如下:

void

*bsearch

(const

void

*key,

const

void

*base,

size_t nmem,

size_t size,

int(

*comp)

(const

void*,

const

void*)

);

key指向所要查詢的元素,base指向進行查詢的陣列,nmem為查詢長度,一般為陣列長度,size為每個元素所佔的位元組數,一般用sizeof(...)表示,comp指向比較子函式,它定義比較的規則。需要注意的是,資料必須是經過預先排序的,而排序的規則要和comp所指向比較子函式的規則相同。如果查詢成功則返回陣列中匹配元素的位址,反之則返回空。對於有多於乙個的元素匹配成功的情況,bsearch()未定義返回哪乙個。

例:#

include

#include

#define num 8

int compare(

const

void

*p,const

void

*q)int main(

int argc,

char

*argv)

;int key = 3;

int*p;

qsort

(array, num,

sizeof

(int

), compare)

;p =

(int*)

bsearch

(&key, array, num,

sizeof

(int

), compare)

;(p =

=null)?

puts

("not found"):

puts

("found");

return 0;

}

結果如下:

found

C語言中用bsearch 實現查詢操作

c語言中可以用bsearch 實現二分查詢。同qsort 一樣,bsearch 也包含在庫中,且同樣要自定義比較子函式。其原型如下 void bsearch const void key,const void base,size t nmem,size t size,int comp const v...

C語言中用GNU gettext實現本地化

首先要確認gnu gettext已經被安裝。寫乙個示例程式 gettext test.c include include include define string gettext string intmain 下面先分析一下上面的原始檔 locale.h包含下面要呼叫的setlocale函式的宣告...

C語言實現查詢whois

define crt secure no warnings include include include include int main else pclose fp sleep 1000 return 0 儲存還未占用的網域名稱 亂碼是由於cmd預設是gbk編碼方式。修改方法 在中文windo...