Por que o programa C a seguir apresenta um erro de barramento?

Eu acho que é a primeira chamada strtok que está falhando. Já faz um tempo desde que escrevi C e estou perdida. Muito obrigado.

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {
  char *str = "one|two|three";

  char *tok = strtok(str, "|");

  while (tok != NULL) {
    printf("%s\n", tok);
    tok = strtok(NULL, "|");
  }

  return 0;
}

questionAnswers(3)

yourAnswerToTheQuestion