STRTOK(3)

НАЗВАНИЕ
strtok, strtok_r - извлечение элементов (токенов) из строки

СИНТАКСИС
#include <string.h>

char *strtok(char *s, const char *delim);

char *strtok_r(char *s, const char *delim, char **ptrptr);

ОПИСАНИЕ
`Токеном' называется ненулевой элемент (непустая строка), состоящий (-ая) из символов, не встречающихся в строке delim, которую завершает символ \0 или символ, входящий в delim.

Функцию strtok() можно использовать для разделения строки s на токены. При первом вызове strtok() необходимо указать s в качестве первого аргумента. В последующих вызовах в качестве первого аргумента нужно использовать NULL. Каждый вызов возвращает указатель на следующий токен или NULL, если токенов больше не обнаружено.

Если токен завершается разделителем, то этот символ заменяется символом \0, а указатель на следующий символ сохраняется для следующего вызова strtok(). Разделители могут отличаться при каждом последующем вызове.

Функция strtok_r() является реентрантной версией функции strtok() и вместо статического буфера использует указатель типа char*, предоставленный пользователем. Этот указатель, передаваемый в параметре ptrptr, должен быть одним и тем же при обработке одной и той же строки.

НАЙДЕННЫЕ ОШИБКИ
Никогда не используйте эти функции. Если Вы все-таки делаете это, то имейте в виду:

    Эти функции изменяют свой первый аргумент.

    Эти функции нельзя использовать со строковыми константами.

    Информация о символах-разделителях теряется.

    Функция strtok() использует статический буфер при обработке строки, поэтому её небезопасно использовать в программах со множеством процессов, работающих с одной областью памяти. Если Вам подходит strtok_r(), то используйте эту функцию.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция strtok() возвращает указатель на следующий токен или NULL, если токенов больше нет.

СООТВЕТСТВИЕ СТАНДАРТАМ

strtok()
    SVID 3, POSIX, BSD 4.3, ISO 9899

strtok_r()
    POSIX.1c

СМ. ТАКЖЕ
index(3), memchr(3), rindex(3), strchr(3), strpbrk(3), strsep(3), strspn(3), strstr(3)