strtok(3) Library Functions Manual strtok(3) NAZWA strtok - wydziela slowa z lancuchow BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include char *strtok(char *_Nullable restrict str, const char *restrict delim); OPIS Funkcja strtok() dzieli lancuch na sekwencje zera lub wiecej niepustych slow. Przy pierwszym wywolaniu funkcji strtok(), lancuch do przetworzenia powinien byc podany w str. W kazdym kolejnym wywolaniu, ktore powinno przetworzyc ten sam lancuch, str musi byc NULL. Argument delim okresla zbior bajtow sluzacych do oddzielania slow w przetwarzanym lancuchu. Program wywolujacy moze podawac rozne argumenty delim w kolejnych wywolaniach przetwarzajacych ten sam lancuch znakow. Kazde wywolanie funkcji strtok() zwraca wskaznik do zakonczonego znakiem null lancuch zawierajacego nastepne slowo. Lancuch ten nie zawiera znaku separatora. Jesli nie ma wiecej slow, to strtok() zwraca NULL. Sekwencja wywolan strtok() dzialajaca na tym samym lancuchu znakow przechowuje wskaznik okreslajacy punkt, od ktorego nalezy szukac kolejnego slowa. Pierwsze wywolanie strtok() ustawia ten wskaznik na pierwszy bajt lancucha. Poczatek kolejnego slowa jest okreslany przez szukanie kolejnego bajtu niebedacego ogranicznikiem w str. Jesli taki bajt zostanie znaleziony, to jest uwazany za poczatek kolejnego slowa. Jesli nie ma takiego bajtu, to nie ma wiecej slow i strtok() zwraca NULL (Lancuch, ktory jest pusty, lub taki, ktory zawiera tylko znaki ogranicznika, spowoduje, ze pierwsze wywolanie strtok() takze zwroci NULL). Koniec kazdego slowa jest okreslany przez wyszukanie albo nastepnego bajtu ogranicznika albo napotkanie konczacego bajtu null ('\0'). Jesli zostanie znaleziony bajt ogranicznika, to jest nadpisywany znakiem null, tak aby zakonczyc biezace slowo, a strtok() zachowuje wskaznik do kolejnego bajtu; wskaznik ten bedzie uzyty jako punkt startowy wyszukiwania kolejnego slowa. W takim przypadku strtok() zwraca wskaznik do poczatku znalezionego slowa. Z powyzszego opisu wynika, ze sekwencja dwoch lub wiecej nastepujacych po sobie bajtow ogranicznika w przetwarzanym lancuchu jest uwazana za pojedynczy ogranicznik i ze ograniczniki na poczatku i koncu lancucha sa zawsze ignorowane. Innymi slowy: slowa zwracane przez strtok() sa zawsze niepustymi lancuchami znakow. Dlatego na przyklad kolejne wywolanie strtok() dla lancucha ,,aaa;;bbb," z lancuchem ogranicznikow ,,;," zwroca slowa ,,aaa" oraz ,,bbb", a nastepnie zwroca wskaznik null. WARTOSC ZWRACANA Funkcja strtok() zwraca wskaznik do nastepnego slowa lub NULL, jesli nie ma juz wiecej slow. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +------------+--------------------------+------------------------------+ |Interfejs | Atrybut | Wartosc | +------------+--------------------------+------------------------------+ |strtok() | Bezpieczenstwo watkowe | MT-niebezpieczne race:strtok | +------------+--------------------------+------------------------------+ STANDARDY C11, POSIX.1-2008. HISTORIA POSIX.1-2001, C89, SVr4, 4.3BSD. ZASTRZEZENIA Nalezy zachowac ostroznosc przy uzywaniu tej funkcji. Jesli jednak sie ja stosuje, to nalezy zauwazyc, ze: o Tozsamosc bajtu separatora jest tracona. o Funkcja strtok() korzysta ze statycznego bufora, wiec nie jest przystosowana do wielowatkowosci. Jesli ma to znaczenie, nalezy uzywac strtok_r(3). PRZYKLADY Patrz getaddrinfo_a(3). ZOBACZ TAKZE memchr(3), strchr(3), string(3), strpbrk(3), strsep(3), strspn(3), strstr(3), strtok_r(3), wcstok(3) TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Pawel Wilk , Andrzej Krzysztofowicz , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.18 25 lutego 2026 r. strtok(3)