## strtok

#### OS/161 Reference Manual

### Name

strtok - tokenize string

### Library

Standard C Library (libc, -lc)

### Synopsis

`#include <string.h>`
`char *`
`strtok(char *`string`, const char *`separators`);`

### Description

`strtok` splits up the string string into fields using the characters found in separators as delimiters. The delimiters found are discarded. Multiple delimiter characters in a row are treated as a single delimiter.

When first called, `strtok` returns the first field of string. To retrieve successive fields of string, call `strtok` again repeatedly, passing `NULL` as the first argument. When no more fields are left, `NULL` is returned. If the string is empty or contains only delimiters, `NULL` will be returned on the first call.

### Cautions

Note that the state used to remember string across calls is global. Thus, `strtok` cannot be used from more than one thread at a time in a multithreaded program, nor can it be used in a subroutine called from within a loop that itself uses `strtok`. If these restrictions are problematic, use strtok_r.

The behavior if strtok is called again without passing a new string after it has returned `NULL` is undefined.

The behavior if strtok is called with the first argument `NULL` without having first passed a valid string is also undefined.

### Return Values

`strtok` returns successive components of the passed-in string, and `NULL` when no more remain.