Cómo leer un archivo CSV en C

Escrito por matt billock | Traducido por beatriz sánchez
  • Comparte
  • Twittea
  • Comparte
  • Pin
  • E-mail
Cómo leer un archivo CSV en C
Los programas de tabulación y cálculo pueden proporcionar datos en formato CSV. (calculation image by lefty from Fotolia.com)

Muchos programas de software que pueden tratar con números y cálculos puedan proporcionar datos en un archivo CSV (Valores Separados por Comas). Este formato puede ser una forma efectiva de transportar los datos entre varios programas, ya que se puede leer y manipular fácilmente. Muchos programas en C que usan datos seguramente leerán de un archivo CSV en algún momento.

Nivel de dificultad:
Moderadamente difícil

Otras personas están leyendo

Necesitarás

  • Un editor de texto
  • Un compilador
  • Una entrada de archivo CSV

Lista completaMinimizar

Instrucciones

  1. 1

    Consulta la documentación del programa que te dará el archivo CSV. Averigua el número de campos de cada línea, así como el formato de cada campo. Por ejemplo, si el programa te da un CSV con estos datos: 1, "test", 34.5 Marcarías 3 campos: un entero, una cadena y un número en punto flotante.

  2. 2

    Crea una estructura que tanga un dato miembro de cada campo identificado en el CSV. Usando la línea del ejemplo 1, "test", 34.5 necesitarás esta estructura: { int col1; char *col2; float col3; };

  3. 3

    Crea un método en tu programa que trate con la lectura de archivos CSV. Esto deberá estar accesible desde el resto del programa, y seguramente deberás trabajar con estructuras de datos normales para que el resto de métodos puedan acceder a los datos que se han leído. Pasa el parámetro por referencia para no tener que devolver un valor. Un prototipo de función de ejemplo sería: void ParseCSV( char *filename, data& input );

  4. 4

    Incluye la cabecera estándar IO usando este código:

    include <stdio.h>

    Añade este código en la parte superior del archivo fuente que leerá el CSV.

  5. 5

    Incluye la biblioteca de cadenas para permitir la manipulación de los datos del CSV usando este código:

    include <string.h>

    Añade este código en la parte superior del archivo fuente que leerá el CSV.

  6. 6

    Crea un objeto de archivo, que leerá los datos, usando este código: FILE * pInput;

  7. 7

    Crea un buffer de caracteres lo bastante grande como para guardar una línea del archivo. Debido a las limitaciones del lenguaje, la forma más sencilla de hacer esto es declarar un vector de caracteres de con un tamaño lo suficientemente grande, como con:

    define BUFFER_SIZE 1024

    char buf[BUFFER_SIZE];

  8. 8

    Abre el archivo con este código y asígnalo a tu objeto FILE creado antes: FILE object: pInput = fopen("filename," "r")

  9. 9

    Lee una línea del archivo con este código: fgets(buf, sizeof(buf), pInput)

  10. 10

    Analiza el CSV usando la función "strtok". Crea una nueva cadena de caracteres para apuntar a los elementos e inicialízala con los datos de la línea leída antes: char *tok = strtok(buf, ",")

  11. 11

    Convierte el elemento recibido en datos adecuados. Usa la línea de ejemplo: 1, "test", 3.45 Convierte los datos de "tok" en un entero usando este código: row.col1 = atoi(tok);

  12. 12

    Para más lecturas de la misma línea, pasa un parámetro NULL a "strtok" en lugar de la cadena de buffer leída antes: tok = strtok(NULL, ",") Después convierte el elemento al tipo de datos adecuado. Usa la línea de ejemplo 1,"test",3.45 El código de análisis para una línea sería: char *tok = strtok(buf, ","); row.col1 = atoi(tok); tok = strtok(NULL, ","); row.col2 = tok; tok = strtok(NULL, ","); row.col3 = atof(tok);

  13. 13

    Haz esto para todas las entradas de cada línea del CSV. La función "strtok" seguirá dando datos entre valores de comas hasta que no tenga más datos en el buffer, momento en que devolverá NULL. Esto indica que has terminado con la línea.

Consejos y advertencias

  • Encapsula tu conversión de datos en otro método para que el código sea más fácil de leer.
  • El método "fgets" te dará NULL cuando el archivo se haya leído por completo. Usa esto en un bucle while para recorrer todo el archivo.
  • La función "fopen" te dará NULL si hay un error. Asegúrate de comprobar el archivo antes de usarlo.
  • En algunos casos, los elementos proporcionados pueden no tener el formato esperado. Asegúrate de examinar los datos antes de convertir comprobando los valores de error habituales (cadenas vacías, NULL, etc).

No dejes de ver

Filtrar por:
  • Mostrar todos
  • Artículos
  • Galerías de fotos
  • Videos
Ordenar:
  • Más relevante
  • Más popular
  • Más reciente

No se encuentran artículos disponibles

No se encuentran slideshows disponibles

No se encuentran videos disponibles