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.
Suponiendo que puedes Leer TODO el contenido del archivo en Memoria y Guardarlo en un Buffer.
Lo que tendrias que hacer es lo siguiente:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
int total = 0;
char **arreglo = NULL;
char *buffer; // Deberias de lee y guardar Todo el contenido del archivo en esta variable.
char *token = NULL;
token = strtok(buffer,",");
while(token != NULL) {
arreglo = realloc(arreglo, sizeof(char*) * (total +1));
arreglo[total] = token;
printf("Nombre %i: %s\n",total+1,arreglo[total]);
total++;
token=strtok(NULL,",");
}
}
Saludos!
Muchas gracias AlbertoBSD.
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:
int total = 0;
;-) ;-) ;-) ;-) ;-)
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!
También en la línea 10 se te olvida escribir la función xD
token = strtok(buffer,","); // Se te olvidó strtok!!
:xD :xD :xD :xD :xD
Listo ya quedo
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.
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...