Mac Developer Library Developer


This manual page is part of Xcode Tools version 5.0

To obtain these tools:

If you are running a version of Xcode Tools other than 5.0, view the documentation locally:

  • In Xcode

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

  • To learn how the manual is organized or to learn about command syntax, read the manual page for manpages(5).

  • For more information about this technology, look for other documentation in the Apple Developer Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.

STRTOK(3)                BSD Library Functions Manual                STRTOK(3)

     strtok, strtok_r -- string tokens

     Standard C Library (libc, -lc)

     #include <string.h>

     char *
     strtok(char *restrict str, const char *restrict sep);

     char *
     strtok_r(char *restrict str, const char *restrict sep, char **restrict lasts);

     This interface is obsoleted by strsep(3).

     The strtok() function is used to isolate sequential tokens in a null-terminated string, str.  These
     tokens are separated in the string by at least one of the characters in sep.  The first time that
     strtok() is called, str should be specified; subsequent calls, wishing to obtain further tokens from
     the same string, should pass a null pointer instead.  The separator string, sep, must be supplied each
     time, and may change between calls.

     The implementation will behave as if no library function calls strtok().

     The strtok_r() function is a reentrant version of strtok().  The context pointer last must be provided
     on each call.  The strtok_r() function may also be used to nest two parsing loops within one another,
     as long as separate context pointers are used.

     The strtok() and strtok_r() functions return a pointer to the beginning of each subsequent token in the
     string, after replacing the token itself with a NUL character.  When no more tokens remain, a null
     pointer is returned.

     The following uses strtok_r() to parse two strings using separate contexts:

     char test[80], blah[80];
     char *sep = "\\/:;=-";
     char *word, *phrase, *brkt, *brkb;

     strcpy(test, "This;is.a:test:of=the/string\\tokenizer-function.");

     for (word = strtok_r(test, sep, &brkt);
          word = strtok_r(NULL, sep, &brkt))
         strcpy(blah, "blah:blat:blab:blag");

         for (phrase = strtok_r(blah, sep, &brkb);
              phrase = strtok_r(NULL, sep, &brkb))
             printf("So far we're at %s:%s\n", word, phrase);

     memchr(3), strchr(3), strcspn(3), strpbrk(3), strrchr(3), strsep(3), strspn(3), strstr(3), wcstok(3)

     The strtok() function conforms to ISO/IEC 9899:1990 (``ISO C90'').

     Wes Peters, Softweyr LLC: <>

     Based on the FreeBSD 3.0 implementation.

     The System V strtok(), if handed a string containing only delimiter characters, will not alter the next
     starting point, so that a call to strtok() with a different (or empty) delimiter string may return a
     non-NULL value.  Since this implementation always alters the next starting point, such a sequence of
     calls would always return NULL.

BSD                            November 27, 1998                           BSD

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation with the feedback links below.
Bug reports
Report bugs in the functionality of the described tool or API through Bug Reporter.
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.