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:
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: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; } }
[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.