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...
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 {
memset(temporal,0,100);
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);
longitud = strlen(pivote);
valores[lineas-1][campos -1] = calloc(longitud+1,sizeof(char));
strncpy(valores[lineas-1][campos -1],pivote,longitud);
pivote = strtok(NULL, ",");
}
campos_por_linea[lineas-1] = campos;
}while(feof(archivo) == 0);
fclose(archivo);
printf("Mostrando valores leidos\n");
i = 0;
while(i < lineas) {
j = 0;
printf("Linea %i\n",i+1);
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