title: Unexpected strtok() behaviour
body: <p>I'm trying to count the number of words in a file with strtok().</p>
  
  <pre><code>/*
   * code.c
   *
   * WHAT
   *      Use strtok() to count the number of words in a file.
   */
  #include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;string.h&gt;
  #define STRMAX 128
  
  int main() {
      /* Declarations */
      FILE* fptr;
      int iCntr = 0;
      char sLine[STRMAX];
      char* cPToken;
  
      /* Read file */
      /* Error handler */
      if ((fptr = fopen("/home/ubuntu/Dropbox/Unief/C/H18/Opdr01/Debug/test.txt", "r")) == NULL) {
          printf("Couldn't read test.txt.\n");
          exit(0);
      } else {
          while (fgets(sLine, STRMAX-1, fptr) != NULL) {                  /* Read line */
              while ((cPToken = strtok(sLine, ".,; !?\r\n")) != NULL) {   /* Split into words */
                  iCntr++;
              }
          }
          printf("Number of words: %d\n", iCntr);
      }
  
      /* Always clean up your mess */
      fclose(fptr);
      return 0;
  }
  </code></pre>
  
  <p>This causes an infinite loop. Why?</p>