Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sebapoli00 en 25 Marzo 2019, 22:54 pm



Título: Subdividir un String por un caracter separador en un array
Publicado por: sebapoli00 en 25 Marzo 2019, 22:54 pm
Le he estado dando vueltas a este ejercicio y no logro hacerlo funcionar

Recibo un String y un caracter que lo separa y devuelvo un array con el String separado, si no hay nada retorna NULL. Creo que puede ayudar la funcion strtok pero no logro usarlo con claridad.

Ejemplo
Entrada: "foro/el/hacker"
Salida: ['foro', 'el', 'hacker']

Ejemplo
Entrada: "/hola/mundo"
Salida: ['hola', 'mundo']

Ejemplo
Entrada: "12/345/"
Salida: ['12', '345']

Ejemplo
Entrada: "::"
Salida: NULL

la firma del método es:

char** separar(char* aSeparar, char separador){


}

desde ya muchas gracias



Título: Re: Subdividir un String por un caracter separador en un array
Publicado por: K-YreX en 26 Marzo 2019, 11:44 am
Pon el código que tengas para ver tus avances. Entonces podremos ayudarte, si te hacemos nosotros el trabajo no sirve de nada... :-X
PD: Tampoco sé si estás con C o con C++...


Título: Re: Subdividir un String por un caracter separador en un array
Publicado por: MAFUS en 26 Marzo 2019, 15:45 pm
Con C es usando strtok


Título: Re: Subdividir un String por un caracter separador en un array
Publicado por: sebapoli00 en 26 Marzo 2019, 19:00 pm
Pon el código que tengas para ver tus avances. Entonces podremos ayudarte, si te hacemos nosotros el trabajo no sirve de nada... :-X
PD: Tampoco sé si estás con C o con C++...

Mi intencion no era esa, perdon. aclaro que es c++

tengo el siguiente codigo intentandolo pero no funciona

char** separarString (char* str, char separador, int &largoRet) {
   int contador = 0;
   char** matriz = new char *[1];
   char separador1[] = { separador };
   char * pasada1;   
   while ((pasada1 = strtok(str, separador1 )) != NULL){
      contador++;
   }
   largoRet = contador;
   if (contador > 0) {
      matriz[1] = new char[contador];
                char * pasada2;   
                for(int i = 0; i<largoRet ; i++){
         pasada2 = strtok(str, separador1);
              matriz[0] = pasada2;
         }
      }
   }
   return matriz;
}


Título: Re: Subdividir un String por un caracter separador en un array
Publicado por: K-YreX en 26 Marzo 2019, 23:09 pm
Coloca el código entre etiquetas de código GeSHi (hay un desplegable encima del cuadro de texto)...

El problema es que la función <strtok()> no se usa así. La primera vez se pasa la cadena original, y el resto de veces del bucle se pasa NULL como primer parámetro. Puedes mirar más información en otras fuentes. Suerte  :-X