Ragazzi vorrei capire perchè non funziona questo programma:

codice:
#include <stdio.h> #include <string.h>  static const char *g_separators = " ";  int main() { 	char *str = "1 2 3 4 5 6 7 8 9 10"; 	char *ptr;  	ptr = strtok(str, g_separators);  	while (ptr) { 		printf(" => %s\n", ptr); 		ptr = strtok(NULL, g_separators); 	}  	return 0; }
mentre se cambio la dichiarazione di char *str con char str[] funziona...qualcuno mi saprebbe spiegare il motivo?