[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