以下の私のコードで何か奇妙なことが起こっているようです。nthtoken()のprintfのいずれかがコメント化されている場合、main()にトークンは表示されませんが、nthtoken()のprintfのいずれかがコメント化されていない場合、トークンはmainに表示されます。
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 char *nthtoken (char *origStr, char *delimiters, int nth);
 int main (void) {
      char *str = "in principio creavit deus caelum et terram";
      char *delims = " ";
      char *tok = nthtoken (str, delims, 3);
      printf ("token: %s\n", tok);
      return (EXIT_SUCCESS);
 }
 char *nthtoken (char *origStr, char *delimiters, int nth) {
      char str[strlen (origStr)];
      strncpy (str, origStr, strlen (origStr) + 1);
      char *token = NULL;
      token = strtok (str, delimiters);
      // printf ("first token: %s\n", token);
      int i = 0;
      for (i = 0; i < nth; i++) {
           token = strtok (NULL, delimiters);
           //printf ("token inside the loop: %s\n", token); 
      }
      // printf ("token before returning to main(): %s\n", token);
      return token;
 }