• Viernes 8 de Noviembre de 2024, 23:12

Autor Tema:  Leer Fichero Csv Por Líneas Y Pasarlas A Un Array  (Leído 11800 veces)

kati

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
« en: Sábado 9 de Junio de 2007, 15:06 »
0
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!!

weps84

  • Miembro MUY activo
  • ***
  • Mensajes: 138
    • Ver Perfil
Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
« Respuesta #1 en: Lunes 11 de Junio de 2007, 05:07 »
0
Pregunto que es un fichero csv que hace en particular o simplemente es un archivo cualquiera?

kati

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
« Respuesta #2 en: Lunes 11 de Junio de 2007, 12:30 »
0
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:

kati

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
« Respuesta #3 en: Lunes 11 de Junio de 2007, 14:04 »
0
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:

weps84

  • Miembro MUY activo
  • ***
  • Mensajes: 138
    • Ver Perfil
Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
« Respuesta #4 en: Lunes 11 de Junio de 2007, 18:22 »
0
pero se guarda en formato texto?

si es asi intenta extraerlo como texto, con fgets, y luego haces las respectivas conversiones

kati

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
« Respuesta #5 en: Lunes 11 de Junio de 2007, 19:34 »
0
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. ;)

weps84

  • Miembro MUY activo
  • ***
  • Mensajes: 138
    • Ver Perfil
Re: Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
« Respuesta #6 en: Martes 12 de Junio de 2007, 18:12 »
0
de nada