Título: Leer archivo CSV
Publicado por: huchoko en 3 Noviembre 2018, 02:50 am
Hola, tengo este problema... Tengo un archivo CSV, el cúal tiene esto: Auto,4343,5832 Auto2,5343,8720 y necesito mostrar cada uno de esos valores que están separados por comas. (se podría guardar en un vector) Todo lo que he encontrado no me ha funcionado. Saludos edit: en realidad lo necesitaba para C++, pero olvide especificarlo :facepalm:, asi que es mi culpa, tendré que poortear mi código de C++ a C, para que me funcione. no me odien por mi estupidez...
Título: Re: Leer archivo CSV
Publicado por: AlbertoBSD en 3 Noviembre 2018, 04:14 am
El codigo lo estare publicando en Leer archivo CSV en C - Programación Trabajos Escolares (https://programaciontrabajosescolares.blogspot.com/2018/11/leer-archivo-csv-en-c.html) Si tienes mas peticiones de programas no dudes en pedirlos en la pagina anterior o en la pagina de FB del mismo Nombre https://www.facebook.com/ProgramacionTrabajosEscolares/ #include<stdio.h> #include<stdlib.h> #include<string.h> char temporal[100]; char ***valores = NULL; //Valores va a contener todos los valores leidos int *campos_por_linea = NULL; char *pivote = NULL; int lineas = 0; int campos = 0; int longitud = 0; int i,j; int main() { FILE *archivo = NULL; archivo = fopen("autos.csv","r"); if(archivo != NULL) { do { fgets(temporal ,100,archivo ); lineas++; valores = realloc(valores ,lineas *sizeof(char*)); campos_por_linea = realloc(campos_por_linea ,lineas *sizeof(int)); valores[lineas-1] = NULL; pivote = strtok(temporal ,","); campos = 0; while (pivote != NULL) { campos++; valores [lineas -1] = realloc(valores [lineas -1],sizeof(char*)*campos ); valores [lineas -1][campos -1] = calloc(longitud +1,sizeof(char)); strncpy(valores [lineas -1][campos -1],pivote ,longitud ); } campos_por_linea[lineas-1] = campos; }while(feof(archivo ) == 0); printf("Mostrando valores leidos\n"); i = 0; while(i < lineas) { j = 0; while(j < campos_por_linea[i]) { // Aqui es donde se procesarian los campos para transformarlos a valores enteres flotantes etc.... printf("Campo %i: %s\n",j +1,valores [i ][j ]); //Actualmente todos los campos son char* j++; } i++; } } else { printf("Error leyendo el archivo\n"); } }
Archivo: Auto,4343,5832 Auto2,5343,8720 Auto3,53423,81220 Salida Mostrando valores leidos Linea 1 Campo 1: Auto Campo 2: 4343 Campo 3: 5832
Linea 2 Campo 1: Auto2 Campo 2: 5343 Campo 3: 8720
Linea 3 Campo 1: Auto3 Campo 2: 53423 Campo 3: 81220
|