Scroll to navigation

strtok(3) Library Functions Manual strtok(3)

NAZWA

strtok - extract tokens from strings

BIBLIOTEKA

Standardowa biblioteka C (libc-lc)

SKŁADNIA

#include <string.h>
char *strtok(char *_Nullable restrict str, const char *restrict delim);

OPIS

Funkcja strtok() dzieli łańcuch na sekwencję zera lub więcej niepustych słów. Przy pierwszym wywołaniu funkcji strtok(), łańcuch do przetworzenia powinien być podany w str. W każdym kolejnym wywołaniu, które powinno przetworzyć ten sam łańcuch, str musi być NULL.

Argument delim określa zbiór bajtów służących do oddzielania słów w przetwarzanym łańcuchu. Program wywołujący może podawać różne argumenty delim w kolejnych wywołaniach przetwarzających ten sam łańcuch znaków.

Każde wywołanie funkcji strtok() zwraca wskaźnik do zakończonego znakiem null łańcuch zawierającego następne słowo. Łańcuch ten nie zawiera znaku separatora. Jeśli nie ma więcej słów, to strtok() zwraca NULL.

Sekwencja wywołań strtok() działająca na tym samym łańcuchu znaków przechowuje wskaźnik określający punkt, od którego należy szukać kolejnego słowa. Pierwsze wywołanie strtok() ustawia ten wskaźnik na pierwszy bajt łańcucha. Początek kolejnego słowa jest określany przez szukanie kolejnego bajtu niebędącego ogranicznikiem w str. Jeśli taki bajt zostanie znaleziony, to jest uważany za początek kolejnego słowa. Jeśli nie ma takiego bajtu, to nie ma więcej słów i strtok() zwraca NULL (Łańcuch, który jest pusty, lub taki, który zawiera tylko znaki ogranicznika, spowoduje, że pierwsze wywołanie strtok() także zwróci NULL).

Koniec każdego słowa jest określany przez wyszukanie albo następnego bajtu ogranicznika albo napotkanie kończącego bajtu null ('\0'). Jeśli zostanie znaleziony bajt ogranicznika, to jest nadpisywany znakiem null, tak aby zakończyć bieżące słowo, a strtok() zachowuje wskaźnik do kolejnego bajtu; wskaźnik ten będzie użyty jako punkt startowy wyszukiwania kolejnego słowa. W takim przypadku strtok() zwraca wskaźnik do początku znalezionego słowa.

Z powyższego opisu wynika, że sekwencja dwóch lub więcej następujących po sobie bajtów ogranicznika w przetwarzanym łańcuchu jest uważana za pojedynczy ogranicznik i że ograniczniki na początku i końcu łańcucha są zawsze ignorowane. Innymi słowy: słowa zwracane przez strtok() są zawsze niepustymi łańcuchami znaków. Dlatego na przykład kolejne wywołanie strtok() dla łańcucha „aaa;;bbb,” z łańcuchem ograniczników „;,” zwrócą słowa „aaa” oraz „bbb”, a następnie zwrócą wskaźnik null.

WARTOŚĆ ZWRACANA

strtok() returns a pointer to the next token, or NULL if there are no more tokens.

ATRYBUTY

Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).

Interfejs Atrybut Wartość
strtok() Bezpieczeństwo wątkowe MT-niebezpieczne race:strtok

STANDARDY

C11, POSIX.1-2008.

HISTORIA

POSIX.1-2001, C89, SVr4, 4.3BSD.

CAVEATS

Be cautious when using this function. If you do use it, note that:

Tożsamość bajtu separatora jest tracona.
The strtok() function uses a static buffer while parsing, so it's not thread safe. Use strtok_r(3) if this matters to you.

PRZYKŁADY

See getaddrinfo_a(3).

ZOBACZ TAKŻE

memchr(3), strchr(3), string(3), strpbrk(3), strsep(3), strspn(3), strstr(3), strtok_r(3), wcstok(3)

TŁUMACZENIE

Tłumaczenie niniejszej strony podręcznika: Paweł Wilk <siefca@pl.qmail.org>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

25 lutego 2026 r. Linux man-pages (niewydane)