Bueno estoy haciendo un programa en el que tengo que hacer mi propia versión, de la función strtok de la librería string, y pues se sabe que solo la primera llamada a esa función recibe como primer parámetro la cadena que se descompondrá, ya las llamadas subsiguientes reciben NULL, y pues mi conflicto es ese.
Lo primero que se me ocurrio es crear un apuntador doble estático en la función para que guarde en la primera llamada a la función la cadena en cuestión y así prescindir del primer parámetro en las llamadas subsiguientes, manipulando el apuntador estático.
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 = &s1;
static int i = 0;
while(*(s1+i) != '\0' && *(s1+i) != *s2) ///recorre la cadena hasta encontrar la cadena s2 o el carácter nulo
++i;
if (*(s1+i) != '\0'){ ///si se encontró con la cadena de separación
*(s1+i) = '\0';
++i;
}
}
El código aun no esta completo, solo compile para ver si era posible hacerlo de esa forma, pero me tira el siguiente error en la línea de la declaración de la variable estática:
[Error] initializer element is not constant
¿No es posible hacerlo de la forma que pretendo?
Podría hacerlo si en todas las llamadas se pasará la cadena, ya que podría usar una variable estática como subíndice de la cadena e ir recorriendola en las llamadas subsiguientes, pero quiero que sea lo más parecida a la función original.
¿Alguna recomendación?
Gracias de antemano.