Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: galapok11 en 10 Agosto 2016, 15:52 pm



Título: Guardar palabras entre " " y separadas por comas en un array. Lenguaje C
Publicado por: galapok11 en 10 Agosto 2016, 15:52 pm
Saludos, este es mi primer tema.
Dispongo de un archivo.txt con mas de 5.000 nombres separados por comas y entre comillas.
Me gustaria saber como guardar todos ellos en un array.
Gracias por leerme y mas un por vuestra futura respuesto.


Título: Re: Guardar palabras entre " " y separadas por comas en un array. Lenguaje C
Publicado por: AlbertoBSD en 10 Agosto 2016, 16:06 pm
Suponiendo que puedes Leer TODO el contenido del archivo en Memoria y Guardarlo en un Buffer.

Lo que tendrias que hacer es lo siguiente:

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. int main() {
  6. int  total = 0;
  7. char **arreglo = NULL;
  8. char *buffer; // Deberias de lee y guardar Todo el contenido del archivo en esta variable.
  9. char *token = NULL;
  10. token = strtok(buffer,",");
  11. while(token != NULL) {
  12. arreglo = realloc(arreglo, sizeof(char*) * (total +1));
  13. arreglo[total] = token;
  14. printf("Nombre %i: %s\n",total+1,arreglo[total]);
  15. total++;
  16. token=strtok(NULL,",");
  17. }
  18. }

Saludos!


Título: Re: Guardar palabras entre " " y separadas por comas en un array. Lenguaje C
Publicado por: galapok11 en 11 Agosto 2016, 11:33 am
Muchas gracias AlbertoBSD.


Título: Re: Guardar palabras entre " " y separadas por comas en un array. Lenguaje C
Publicado por: Yoel Alejandro en 12 Agosto 2016, 16:24 pm
Está genial, usas strtok() para crear dinámicamente un arreglo de apuntadores a las distintas "palabras" en que se divide la cadena original.
Sólo un pequeño detalle, muy pequeño, creo que faltó inicializar el total a 0:
Código:
int total = 0;


Título: Re: Guardar palabras entre " " y separadas por comas en un array. Lenguaje C
Publicado por: AlbertoBSD en 12 Agosto 2016, 16:57 pm
 ;-) ;-) ;-) ;-) ;-)

Muchas gracias!! así es, no hago caso de mis propios consejos de inicializar las variables.... También debo de mencionar que lo escribí en el celular mientras me trasladaba al trabajo en el Bus  :rolleyes:

Ya edite el codigo

Saludos!


Título: Re: Guardar palabras entre " " y separadas por comas en un array. Lenguaje C
Publicado por: class_OpenGL en 12 Agosto 2016, 17:13 pm
También en la línea 10 se te olvida escribir la función xD

Código
  1. token = strtok(buffer,","); // Se te olvidó strtok!!


Título: Re: Guardar palabras entre " " y separadas por comas en un array. Lenguaje C
Publicado por: AlbertoBSD en 12 Agosto 2016, 17:17 pm
 :xD :xD :xD :xD :xD

Listo ya quedo


Título: Re: Guardar palabras entre " " y separadas por comas en un array. Lenguaje C
Publicado por: Yoel Alejandro en 12 Agosto 2016, 18:20 pm
Por cierto que este post es un tributo a strtok(), una función sumamente poderosa y que no todos (especialmente principiantes) conocen bien.

Recuerdo una vez escribí un código para analizar sintácticamente un trozo de HTML que implementabla una tabla, ya saben con <tr>, <th>, etc. La idea era automatizar la tarea de descargar diariamente un fichero html desde un servidor (usando un gestor como wget.exe) y extraer los datos de la tabla a partir del HTML recibido. Luego, por supuesto una serie de cálculos a partir de dichos datos. Y bueno, ... ya me alejé del punto central, que era que mi programa analizaba todo el fragmento de <table> ... </table> usando strtok().

Aún debo tener el código por ahí, lo estuve buscando pero creo que se me borró de la computadora snif, snif, jaja.


Título: Re: Guardar palabras entre " " y separadas por comas en un array. Lenguaje C
Publicado por: AlbertoBSD en 12 Agosto 2016, 19:30 pm
Buscabas por "<>"me imagino.

Si muchos no se quieren complicar la vida con tanto apuntador y direcciones de memoria,  buscan ya algo ya hecho como el StringTokenizer de Java en fin...