Linux講座にようこそ。このページは「C言語プログラミング入門 - 第14章.ライブラリ関数 - 一般ユーティリティライブラリ」です。
bsearch(binary search)関数は配列中から該当する要素を検索(サーチ)します。前提条件として、配列の内容は昇順に整列(ソート)されていなければなりません。
形式 | #include <stdlib.h> void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); |
---|---|
返り値 | 検索出来た場合は該当する要素のポインタを返し、検索出来なかった場合はNULLを返します。該当する要素が複数あった場合はどの要素のポインタが返るかは不定です。 |
引数 |
|
第5引数に指定したは関数はbsearch関数から呼び出されます。その時、第1引数は検索キーで、第2引数は検索キーと比較する配列要素が渡ってきますので、それを比較して次のような値を返すようにします。
qsort関数は配列要素を昇順(小から大)または、降順(大から小)に整列(ソート)します。
形式 | #include <stdlib.h> void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)); |
---|---|
返り値 | ありません。 |
引数 |
|
第4引数に指定したは関数はqsort関数から呼び出されます。その時、引数には比較する配列要素が渡ってきますので、それを比較して次のような値を返すようにします。(降順の場合は小さい場合と大きい場合を逆にします)
郵便番号と住所を記入したファイルを入力して、指定された郵便番号に対する住所を表示します。郵便番号として「end」を入力したら終了します。
$ cat ./DATA/ex14_7_3_jip.dat 2430035,神奈川県厚木市愛甲 2430038,神奈川県厚木市愛名 2430126,神奈川県厚木市岡津古久 2430125,神奈川県厚木市小野 2430032,神奈川県厚木市恩名 2430031,神奈川県厚木市戸室 2430121,神奈川県厚木市七沢 2430033,神奈川県厚木市温水 2430039,神奈川県厚木市温水西 2430036,神奈川県厚木市長谷 2430034,神奈川県厚木市船子 2430037,神奈川県厚木市毛利台 2430122,神奈川県厚木市森の里 2430123,神奈川県厚木市森の里青山 2430124,神奈川県厚木市森の里若宮 $ $ ./ex14_7_3.prg 郵便番号を入力してください ==> 2430124 神奈川県厚木市森の里若宮 郵便番号を入力してください ==> 2430031 神奈川県厚木市戸室 郵便番号を入力してください ==> 2430126 神奈川県厚木市岡津古久 郵便番号を入力してください ==> 2430000 検索できませんでした。 郵便番号を入力してください ==> end $