No, tambien me siguio tirando el mismo error, lo hice de la siguiente forma y me funciono:
Código:
char *tokens(char *s1,const char *s2) ///Una secuencia de llamadas separa la cadena s1 en tokens, separados por caracteres contenidos en la cadena s2.
{
static char *palabra;
static int i = 0;
if (i == 0) ///primera llamada
palabra = s1;
else if (i == -1){ ///ultima llamada
i = 0;
return NULL;
}
char *cadena = (palabra+i);
while(*(palabra+i) != '\0' && *(palabra+i) != *s2) ///recorre la cadena hasta encontrar la cadena s2 o el caracter nulo
++i;
if (*(palabra+i) == *s2){ ///si se encontro con la cadena de separacion
*(palabra+i) = '\0'; ///convierte el caracter de separacion en caracter nulo
++i; ///y recorre subindice
return cadena;
}
else{
i = -1;
return cadena;
}
}
Aunque si inicializo el apuntador estático en su declaración me tira error el devc++, con codeblocks el programa compila y se ejecuta sin problemas, independientemente de si esté o no inicializada en la declaración.
Nose si sera culpa del devc++ o el codeblocks es mas flexible...