C/Visual C - función strtok

 
Vista:

función strtok

Publicado por Leo (15 intervenciones) el 16/03/2003 18:56:52
En el siguiente ejemplo no entiendo por que al hacer la primera llamada con strtok pone en el primer argumento s1 y luego en while pone
while( (ptr = strtok( NULL, s2 )) != NULL ) . Por que no pone while( (ptr = strtok( s1, s2 )) != NULL ) ????
Aqui teneis el programilla:
#include <stdio.h>
#include <string.h>

int main()
{
char s1[49] = "Esto es un ejemplo para usar la funcion strtok()";
char s2[4] = " \n\t";
char *ptr;

printf( "s1=%s\n", s1 );

ptr = strtok( s1, s2 ); // Primera llamada => Primer token
printf( "%s\n", ptr );
while( (ptr = strtok( NULL, s2 )) != NULL ) // Posteriores llamadas
printf( "%s\n", ptr );

return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:función strtok

Publicado por Malandrin (29 intervenciones) el 16/03/2003 19:45:01
Creo que el programa está mal, como bien dices debe ser un strtok(s1,s2) dentro del while. De donde has sacado este ejemplo??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:función strtok

Publicado por Leo (15 intervenciones) el 16/03/2003 19:54:44
Esta sacado de la web de "C con Clase" pero el ejemplo esta bien xq lo he probado y funciona. He mirado la ayuda del turbo C y parece que dice que cuando encuentra el primer caracter "token" escribe inmediatamente despues un caracter NULL y asi con todas los demas token supongo. Asi que creo que es por esto por lo que pone NULL ahi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:función strtok

Publicado por Trompisoft (15 intervenciones) el 19/03/2003 18:45:20
Es que digamos que la funcion no tiene una forma muy obvia de usarse. Cuando quieres obtener el primer token de una cadena, haces el llamado de la forma strtok(s1,s2); con esto una variable estatica interna es modificada para mantener la informacion del apuntador s1, y la funcion mueve un NULL a la posicion donde encontro el token en la cadena apuntada por s1, con esto, si haces de nuevo un llamado de la forma strtok(s1,s2), te volveria a regresar el mismo valor (s1), siempre. La forma de indicarle a la funcion que necesitas obtener el siguiente token, es haciendo un llamado de la forma strok(NULL,s2), la funcion, gracias a la variable estatica interna, sabe de que cadena necesita sacar la informacion. Por eso es que la funcion es llamada asi en el while.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar