Manpages

名 前

lfind, lsearch − 配 列 を 線 形 検 索 す る

書 式

#include <search.h>

void *lfind(const void *key, const void *base, size_t *nmemb,
size_t
size, int(*compar)(const void *, const void *));

void *lsearch(const void *key, void *base, size_t *nmemb,
size_t
size, int(*compar)(const void *, const void *));

説 明

lfind() と lsearch() は 、 size バ イ ト の 要 素 *nmemb 個 か ら な る 配 列 base か ら 、 key を 線 形 検 索 す る 。 比 較 を 行 う の は compar が 参 照 し て い る 関 数 で 、 こ れ は 2つ の 引 き 数 を 持 ち 、 1つ め の 引 き 数 が key を 、 2つ め の 引 き 数 は 配 列 メ ン バ ー を 指 す 。 ま た compar は 、 key が 配 列 の メ ン バ ー と マ ッ チ し た な ら 0、 そ う で な け れ ば 0 以 外 を 返 す こ と が 期 待 さ れ て い る 。

lsearch() は 、 マ ッ チ す る 要 素 を 見 つ け ら れ な か っ た と き 、 配 列 の 最 後 に key を つ け 加 え る 。 そ し て *nmemb を 1 ふ や す 。 し た が っ て 、 こ の 関 数 を 使 用 す る 際 に は 、 マ ッ チ す る 要 素 が 存 在 す る か 、 も し く は 配 列 に 要 素 を 追 加 す る た め の 領 域 が あ る か 、 を 把 握 し て お く 必 要 が あ る 。

返 り 値

lfind() の 返 り 値 は 、 配 列 の マ ッ チ し た メ ン バ ー へ の ポ イ ン タ ー で あ る 。 も し マ ッ チ す る メ ン バ ー が 見 つ か ら な い と NULL を 返 す 。 lsearch() の 返 り 値 も 、 配 列 の マ ッ チ し た メ ン バ ー へ の ポ イ ン タ ー で あ る 。 マ ッ チ す る メ ン バ ー が 見 つ か ら な か っ た と き は 、 新 た に つ け 加 え た メ ン バ ー へ の ポ イ ン タ ー を 返 す 。

準 拠

SVr4, 4.3BSD, POSIX.1−2001. libc に は libc−4.6.27 以 降 で 実 装 さ れ て い る 。

バ グ

関 数 の 名 前 の 選 び 方 が よ く な い 。

関 連 項 目

bsearch(3), hsearch(3), tsearch(3)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。