---
name: "strcasecmp_l"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/strcasecmp"
---

# strcasecmp\_l(3)

compare strings, ignoring case

Part of [strcasecmp(3)](/strcasecmp/3.md).

## NAME

**strcasecmp**, **strncasecmp** – compare strings, ignoring case

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<strings.h\>**

*int*\

**strcasecmp**(*const char \*s1*, *const char \*s2*);

*int*\

**strncasecmp**(*const char \*s1*, *const char \*s2*, *size\_t len*);

**#include \<strings.h\>**

**#include \<xlocale.h\>**

*int*\

**strcasecmp\_l**(*const char \*s1*, *const char \*s2*, *locale\_t loc*);

*int*\

**strncasecmp\_l**(*const char \*s1*, *const char \*s2*, *size\_t len*, *locale\_t loc*);

## DESCRIPTION

The **strcasecmp**() and **strncasecmp**() functions compare the null-terminated strings *s1* and *s2*.

The **strncasecmp**() function compares at most *len* characters. The **strcasecmp\_l**() and **strncasecmp\_l**() functions do the same as their non-locale versions above, but take an explicit locale rather than using the current locale.

## RETURN VALUES

The functions **strcasecmp**() and **strncasecmp**() return an integer greater than, equal to, or less than 0, depending on whether *s1* is lexicographically greater than, equal to, or less than *s2* after translation of each corresponding character to lower-case. The strings themselves are not modified. The comparison is done using unsigned characters, so that ‘\\200’ is greater than ‘\\0’. The functions **strcasecmp\_l**() and **strncasecmp\_l**() do the same but take explicit locales.

## SEE ALSO

[bcmp(3)](/bcmp/3.md), [memcmp(3)](/memcmp/3.md), [strcmp(3)](/strcmp/3.md), [strcoll(3)](/strcoll/3.md), [strxfrm(3)](/strxfrm/3.md), [tolower(3)](/tolower/3.md), [wcscasecmp(3)](/wcscasecmp/3.md)

## HISTORY

The **strcasecmp**() and **strncasecmp**() functions first appeared in 4.4BSD. Their prototypes existed previously in ⟨string.h⟩ before they were moved to ⟨strings.h⟩ for IEEE Std 1003.1-2001 (“POSIX.1”) compliance.
