---
name: "lsearch"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/lsearch"
---

# lsearch(3)

linear search of an array

## NAME

lfind, lsearch - linear search of an array

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <search.h>
```

**void \*lfind(**size\_t \*n, size\_t size;             **const void** *key***\[***size***\],**             **const void** *base***\[\****n* **\*** *size***\],**             **size\_t \****n***, size\_t** *size***,**             **typeof(int (const void \[***size***\], const void \[***size***\]))**                 **\****compar***);** **void \*lsearch(**size\_t \*n, size\_t size;             **const void** *key***\[***size***\],**             **void** *base***\[\****n* **\*** *size***\],**             **size\_t \****n***, size\_t** *size***,**             **typeof(int (const void \[***size***\], const void \[***size***\]))**                 **\****compar***);**

## DESCRIPTION

**lfind**() and **lsearch**() perform a linear search for *key* in the array *base* which has *\*n* elements of *size* bytes each. The comparison function referenced by *compar* is expected to have two arguments which point to the *key* object and to an array member, in that order, and which returns zero if the *key* object matches the array member, and nonzero otherwise.

If **lsearch**() does not find a matching element, then the *key* object is inserted at the end of the table, and *\*n* is incremented. In particular, one should know that a matching element exists, or that more room is available.

## RETURN VALUE

**lfind**() returns a pointer to a matching member of the array, or NULL if no match is found. **lsearch**() returns a pointer to a matching member of the array, or to the newly added member if no match is found.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **lfind**(), **lsearch**() | Thread safety | MT-Safe |

## STANDARDS

POSIX.1-2008.

## HISTORY

POSIX.1-2001, SVr4, 4.3BSD. libc-4.6.27.

## BUGS

The naming is unfortunate.

## SEE ALSO

[**bsearch**(3)](/bsearch/3.md), [**hsearch**(3)](/hsearch/3.md), [**tsearch**(3)](/tsearch/3.md)
