[C con Clase] problema al tokenizar palabras con la funcion strtok
Ariel Romero
aromero en cenatav.co.cu
Lun Nov 5 17:46:33 CET 2007
Hola a todos, tengo un problema al tokenizar palabras con la funcion:
char *strtok(char *s1, const char *s2);
el problema es que quiero ir leyendo de un fichero e ir separando las
palabras por sus delimitadores: espacio, comas, puntos, caracteres de
nueva linea etc etc...
Pero el problema es que si lo hagocon arreglos dinámicos de caracteres
es decir usando char* cadena no funciona pero si lo hago con arreglos
estaticos char cadena[50] por ejemplo sí funciona, necesito que funcione
con arreglos dinámicos.
Como se puede hacer con arreglos que varía su longitud ?
Espero que alguien me ayude.
codigo:
Así sí funciona:
char s1[51] = "Esto. es, un ejemplo para usar la funcion
strtok()";
char s2[6] = " ,.\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;
De esta otra manera no funciona, da un error: Exception:
STATUS_ACCESS_VIOLATION
char* s1 = "Esto. es, un ejemplo para usar la funcion strtok()";
char s2[6] = " ,.\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;
Salu2
Ariel
Más información sobre la lista de distribución Cconclase