Strtok segfault

Posible duplicado:
Strtok dando la falta de segmentación

¿Por qué me sale segfault usando este código?

void test(char *data) { char *pch; pch = strtok(data, " ,.-"); // segfault while (pch != NULL) { printf("%s\n", pch); pch = strtok(NULL, " ,.-"); } return NULL; } char *data = "- This, a sample string."; test(data); 

strtok() modifica la cadena original. Le estás pasando una cadena de origen constante que no se puede modificar.

Intenta esto en su lugar:

 char *data = strdup("- This, a sample string."); test(data); 

strtok modifica la cadena. Está pasando un puntero a datos de solo lectura (una constante de cadena).

Trate de usar una matriz char.

 char data[] ="- This, is a sample string." test(data);