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

# wcstok(3)

split wide-character string into tokens

## NAME

**wcstok** – split wide-character string into tokens

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

*wchar\_t* *\**\

**wcstok**(*wchar\_t \*restrict ws1*, *const wchar\_t \*restrict ws2*, *wchar\_t \*\*restrict ptr*);

## DESCRIPTION

The **wcstok**() function is used to isolate sequential tokens in a null-terminated wide character string, *ws1*. These tokens are separated in the string by at least one of the characters in *ws2*. The first time that **wcstok**() is called, *ws1* should be specified; subsequent calls, wishing to obtain further tokens from the same string, should pass a null pointer instead. The separator string, *ws2*, must be supplied each time, and may change between calls. The context pointer, *ptr*, must be provided on each call.

The **wcstok**() function is the wide character counterpart of the **strtok\_r**() function.

## RETURN VALUES

The **wcstok**() function returns a pointer to the beginning of each subsequent token in the string, after replacing the token itself with a null wide character (L'\\0'). When no more tokens remain, a null pointer is returned.

## EXAMPLES

The following code fragment splits a wide character string on ASCII space, tab, and newline characters, writing the resulting tokens to standard output:

```
const wchar_t *seps = L" \t\n";
wchar_t *last, *tok, text[] = L" \none\ttwo\t\tthree  \n";
for (tok = wcstok(text, seps, &last); tok != NULL;
    tok = wcstok(NULL, seps, &last))
	wprintf(L"%ls\n", tok);
```

## COMPATIBILITY

Some early implementations of **wcstok**() omit the context pointer argument, *ptr*, and maintain state across calls in a static variable like **strtok**() does.

## SEE ALSO

[strtok(3)](/strtok/3.md), [wcschr(3)](/wcschr/3.md), [wcscspn(3)](/wcscspn/3.md), [wcspbrk(3)](/wcspbrk/3.md), [wcsrchr(3)](/wcsrchr/3.md), [wcsspn(3)](/wcsspn/3.md)

## STANDARDS

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