strtok segmentation fault

Je suis en train d'essayer de comprendre pourquoi l'extrait de code suivant donne une erreur de segmentation:

void tokenize(char* line)
{
   char* cmd = strtok(line," ");

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

int main(void)
{
   tokenize("this is a test");
}

Je sais que strtok() ne le fait pas marquer sur les littéraux de chaîne, mais dans ce cas, line points directement à la chaîne "this is a test" qui est à l'intérieur d'un tableau de char. Est-il de jetons line sans la copier dans un tableau?

Mec - "ceci est un test" est un LITTÉRAL de CHAÎNE. C'est un LECTURE SEULE "tableau de char". Vous pourriez même obtenir loin de tenter de modifier sans s'écraser sur certaines plates-formes. Mais il est certainement un pas-à-pas sur AUCUN plate-forme 🙂

OriginalL'auteur user1162954 | 2012-01-22