You are currently offline, waiting for your internet to reconnect

INFO: strtok(): C Function -- Documentation Supplement

Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
MS-DOS:5.1,6.0,6.00a,6.00ax,7.0; OS/2:5.1,6.0,6.00a; WINDOWS:1.0,1.5;WINDOWS NT:1.0,2.0,4.0,5.0
In Microsoft C, the strtok() function takes two strings asarguments. The first is a series of zero or more tokens separated bydelimiters defined by the second string. The first call to strtok()returns a pointer to the first token in the first argument. To get thenext token in the original string, a call to strtok() must be madewith NULL as the first argument, which tells strtok() to search forthe next token in the previous token string.

Keep the following information in mind when using strtok():

  • strtok() will replace a delimiter in the original string with a NULL each time the function is called using the same string, so the original string is modified by the use of strtok().
  • The second argument to strtok() can be changed at any time to a different delimiter.
  • Only single characters are considered to be delimiters.
More information
On the first call to strtok(), the function searches the stringargument given as the first parameter for any token delimiter definedin the second string argument. Any further call to strtok() with NULLas the first argument will return a pointer to the next token in theoriginal string. The following sample program from page 603 of the"Microsoft C Optimizing Compiler: Run-Time Library Reference" manualfor version 5.1 shows how strtok() searches a token string:

Sample Code

/* Compile options needed: none*/ #include <string.h>#include <stdio.h>char string[] = "a string,of ,,tokens";char *token;void main(void){        token = strtok(string," ,"); /*There are two delimiters here*/         while (token != NULL){                printf("The token is:  %s\n", token);                token = strtok(NULL," ,");        }}				
The output of this program is as follows:
  • The token is: a
  • The token is: string
  • The token is: of
  • The token is: tokens
The following is a sample representation of the area in memory aroundthe token pointer during execution of the above program. Note thereplacement of the delimiter with a NULL character each time a tokenis found:
   -------------------------------------------------------------   |a |  |s |t |r |i |n |g |, |o |f |  |, |, |t |o |k |e |n |s |   -------------------------------------------------------------   This is the original string before the first call to strtok().   -------------------------------------------------------------   |a |\0|s |t |r |i |n |g |, |o |f |  |, |, |t |o |k |e |n |s |   -------------------------------------------------------------    ^----- Token will point here on the first call.   -------------------------------------------------------------   |a |\0|s |t |r |i |n |g |\0|o |f |  |, |, |t |o |k |e |n |s |   -------------------------------------------------------------          ^------ Token will point here on the second call.   -------------------------------------------------------------   |a |\0|s |t |r |i |n |g |\0|o |f |\0|, |, |t |o |k |e |n |s |   -------------------------------------------------------------                               ^----- Token will point here on                                      the third call.                                (and so on)				

Article ID: 51327 - Last Review: 06/17/2014 21:44:00 - Revision: 4.0

  • kbcode kbcrt kbinfo KB51327