---
name: "wcscoll"
section: "3"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["freebsd", "macos"]
url: "https://new.carta.tech/wcscoll"
---

# wcscoll(3)

compare wide strings according to current collation

## NAME

**wcscoll**, **wcscoll\_l** – compare wide strings according to current collation

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

*int*\

**wcscoll**(*const wchar\_t \*ws1*, *const wchar\_t \*ws2*);

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

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

*int*\

**wcscoll\_l**(*const wchar\_t \*ws1*, *const wchar\_t \*ws2*, *locale\_t loc*);

## DESCRIPTION

The **wcscoll**() function compares the null-terminated strings *ws1* and *ws2*, according to the current locale's collation order. In the “C” locale, **wcscoll**() is equivalent to **wcscmp**().

Although the **wcscoll**() function uses the current locale, the **wcscoll\_l**() function may be passed a locale directly. See [xlocale(3)](/xlocale/3.md) for more information.

## RETURN VALUES

The **wcscoll**() function returns an integer greater than, equal to, or less than 0, if *ws1* is greater than, equal to, or less than *ws2*.

No return value is reserved to indicate errors; callers should set *errno* to 0 before calling **wcscoll**(). If it is non-zero upon return from **wcscoll**(), an error has occurred.

## ERRORS

The **wcscoll**() function will fail if:

- \[EILSEQ\]

  An invalid wide character code was specified.

- \[ENOMEM\]

  Cannot allocate enough memory for temporary buffers.

## SEE ALSO

[setlocale(3)](/setlocale/3.md), [strcoll(3)](/strcoll/3.md), [wcscmp(3)](/wcscmp/3.md), [wcsxfrm(3)](/wcsxfrm/3.md), [xlocale(3)](/xlocale/3.md)

## STANDARDS

The **wcscoll**() function conforms to ISO/IEC 9899:1999 (“ISO C99”).

## BUGS

The current implementation of **wcscoll**() only works in single-byte LC\_CTYPE locales, and falls back to using **wcscmp**() in locales with extended character sets.
