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

# wctrans(3)

wide character mapping functions

## NAME

**towctrans**, **towctrans\_l**, **wctrans**, **wctrans\_l** – wide character mapping functions

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

*wint\_t*\

**towctrans**(*wint\_t wc*, *wctrans\_t desc*);

*wctrans\_t*\

**wctrans**(*const char \*charclass*);

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

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

*wint\_t*\

**towctrans\_l**(*wint\_t wc*, *wctrans\_t desc*, *locale\_t loc*);

*wctrans\_t*\

**wctrans\_l**(*const char \*charclass*, *locale\_t loc*);

## DESCRIPTION

The **wctrans**() function returns a value of type *wctrans\_t*, which represents the requested wide character mapping operation and may be used as the second argument for calls to **towctrans**().

The following character mapping names are recognised:

| | |
| --- | --- |
| tolower | toupper |

The **towctrans**() function transliterates the wide character *wc*, according to the mapping described by *desc*.

While the **towctrans**() and **wctrans**() functions use the current locale, the **towctrans\_l**() and **wctrans\_l**() functions may be passed locales directly. See [xlocale(3)](/xlocale/3.md) for more information.

## RETURN VALUES

The **towctrans**() function returns the transliterated character if successful, otherwise it returns the character unchanged and sets *errno*.

The **wctrans**() function returns non-zero if successful, otherwise it returns zero and sets *errno*.

## EXAMPLES

Reimplement **towupper**() in terms of **towctrans**() and **wctrans**():

```
wint_t
mytowupper(wint_t wc)
{
	return (towctrans(wc, wctrans("toupper")));
}
```

## ERRORS

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

- \[EINVAL\]

  The supplied *desc* argument is invalid.

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

- \[EINVAL\]

  The requested mapping name is invalid.

## SEE ALSO

[tolower(3)](/tolower/3.md), [toupper(3)](/toupper/3.md), [wctype(3)](/wctype/3.md), [xlocale(3)](/xlocale/3.md)

## STANDARDS

The **towctrans**() and **wctrans**() functions conform to IEEE Std 1003.1-2001 (“POSIX.1”).

## HISTORY

The **towctrans**() and **wctrans**() functions first appeared in FreeBSD 5.0.
