SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: kati en Sábado 9 de Junio de 2007, 15:06

Título: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
Publicado por: kati en Sábado 9 de Junio de 2007, 15:06
Saudos!!!  :kicking:

Necesito pasar a un Array los campos de un fichero CSV dónde tengo habilitadas 3 columnas y 'X' filas. Hasta el momento consigo leer el fichero con las funciones fgets o fgetc y puts de stdio.h
El objetivo es poder leer una fila del fichero, separar los 3 campos en un array o asociarlos a tres variables... y esperar un TIEMPO "T", que viene dado por el campo de tercera columna del CSV, para leer la siguiente fila.
Hasta el momento he hecho lo siguiente:
FILE* fp;
char sLine[10];
fp = fopen("plantilla.csv", "r");
if(fp == NULL) Memo1->Lines->Add("File could not be opened..");
fgets(sLine, 10, fp);
puts(sLine);
Puedo ver que sLine contiene toda la primera línea del fichero.

La pregunta es cómo puedo hacer para leer línea a línea y crear un array con los resultados. Me interesa leer a partir de la segunda línea del CSV.

Otra pregunta cómo hago con fopen para no tener que pasarle el nombre del fichero directo si utilizo un dialog con el que utilizando la función OpenTextFileDialog1->FileName.c_str(); me devuelve la ruta entera. Puedo pasarle la ruta a fopen de alguna forma??

 :lightsabre:  un saludo para todos!!
Título: Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
Publicado por: weps84 en Lunes 11 de Junio de 2007, 05:07
Pregunto que es un fichero csv que hace en particular o simplemente es un archivo cualquiera?
Título: Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
Publicado por: kati en Lunes 11 de Junio de 2007, 12:30
buenas!!!  :hola:

Los ficheros CSV (del inglés comma-separated values) son un tipo de documento sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas (o punto y coma en donde la coma es el separador decimal: España, Francia, Italia...) y las filas por saltos de línea. Los campos que contengan una coma, un salto de línea o una comilla doble deben ser encerrados entre comillas dobles.

gracias por contestar....

xd  :kicking:
Título: Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
Publicado por: kati en Lunes 11 de Junio de 2007, 14:04
para leer una línea hago lo que se muestra a continuación....luego sólo hay que añadir un bucle......y tratar  las variables.....

char buffer[100];
FILE* fp;
typedef struct{
   int a;
   float b;
   float c;
}Script;
Script var;
memset(buffer,'\0',100);
fp = fopen("prueva.csv", "r");
if(fp == NULL) Memo1->Lines->Add("File could not be opened..");
else{
.....
fscanf(fp, "%[^\n]",buffer);
fscanf(fp, "%c", buffer);
fscanf(fp, "%d", &var.a);
fscanf(fp, "%c", buffer);
fscanf(fp, "%f", &var.B);
fscanf(fp, "%c", buffer);
fscanf(fp, "%f", &var.c);
fscanf(fp, "%c", buffer);
}
....
Saludos!! :comp:
Título: Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
Publicado por: weps84 en Lunes 11 de Junio de 2007, 18:22
pero se guarda en formato texto?

si es asi intenta extraerlo como texto, con fgets, y luego haces las respectivas conversiones
Título: Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
Publicado por: kati en Lunes 11 de Junio de 2007, 19:34
Buenas!!
Lo que me interesa es el entero y los flotantes, el buffer lo utilizo como contenedor para los ';' que separan los campos del fichero y de esa forma me olvido de ellos...!!!
XD. ;)
Título: Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
Publicado por: weps84 en Martes 12 de Junio de 2007, 18:12
de nada