FreeBSD 7.0 manual page repository

FreeBSD is a free computer operating system based on BSD UNIX originally. Many IT companies, like DeployIS is using it to provide an up-to-date, stable operating system.

strtok, strtok_r - string tokens



      strtok, strtok_r - string tokens


      Standard C Library (libc, -lc)


      #include <string.h>
      char *
      strtok(char *str, const char *sep);
      char *
      strtok_r(char *str, const char *sep, char **last);


      This interface is obsoleted by strsep(3).
      The strtok() function is used to isolate sequential tokens in a null-ter‐
      minated 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 fur‐
      ther 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


      The following uses strtok_r() to parse two strings using separate con‐
      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 C89”).


      Wes Peters, Softweyr LLC: 〈〉
      Based on the FreeBSD 3.0 implementation.


      The System V strtok(), if handed a string containing only delimiter char‐
      acters, 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 start‐
      ing point, such a sequence of calls would always return NULL.


Based on BSD UNIX
FreeBSD is an advanced operating system for x86 compatible (including Pentium and Athlon), amd64 compatible (including Opteron, Athlon64, and EM64T), UltraSPARC, IA-64, PC-98 and ARM architectures. It is derived from BSD, the version of UNIX developed at the University of California, Berkeley. It is developed and maintained by a large team of individuals. Additional platforms are in various stages of development.