title: strtok on 64 bit machines
body: <p>The following code works differently on 64 bit and on 32 bit which is causing me trouble to port my code. </p>
  
  <pre><code>char * tmp = "How are you?";
  printf("size of char * = %ld and size of strtok return val = %ld \n",sizeof(char *),sizeof(strtok(tmp," ")));
  </code></pre>
  
  <p>Following is the output: </p>
  
  <pre><code>32 bit: 
  size of char * = 4 and size of strtok return val = 4 
  
  64 bit:
  
  size of char * = 8 and size of strtok return val = 4
  </code></pre>
  
  <p>The man page of strtok says: </p>
  
  <pre><code>   #include &lt;string.h&gt;
  
     char *strtok(char *str, const char *delim);
  
  RETURN VALUE
         The strtok() and strtok_r() functions return a pointer to the next token, or NULL if there are no more tokens.
  </code></pre>
  
  <p>The char* on a 64 bit machine is supposed to be 8 bytes as printed. So why is strtok returning a 4 bytes char pointer on a 64 bit machine?? </p>
  
  <p>Thanks</p>