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

# wctrans(3)

wide character mapping functions

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

## NAME

**towctrans**, **wctrans** – 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*);

## 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*.

## 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)

## 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.
