CSV fájl beolvasása C nyelvben

Címkék
CSV fájl beolvasása C nyelvben
2019-02-05T11:30:33+01:00
2019-02-06T11:47:00+01:00
2022-08-11T09:55:30+02:00
makkos2
Sziasztok! Egy olyan kérdésem lenne, hogy CSV fájlból hogyan tudom beolvasni cellánként elválasztva az adatokat. Olvastam több oldalon, hogy a CSV fájl celláit ";"-vel elválasztva tudom beolvasni, de nekem úgy a cellán belül szóközzel elválasztott szöveget is külön sorba teszi. 

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#define FILENAME "text.csv"

typedef struct szemely{
char nev[10];
int kor[4];
}szemely;

int main(){
FILE *fo;
szemely temp;
int eletkor;

fo = fopen(FILENAME, "r");
if (fo){
while (!feof(fo)){
fscanf(fo, "%s;%s", &temp.nev, &temp.kor);
eletkor = atoi(&temp.kor);
printf("Nev: %s Kora: %d\n", &temp.nev, eletkor);
}

fclose(fo);
}
else{
perror("Hiba!\n");
fscanf(stderr, "Hiba, %s\n", strerror(errno));
}
return 0;
}
Mutasd a teljes hozzászólást!
Csatolt állomány
#include <stdio.h> #include <stdlib.h> #include <errno.h> #define FILENAME "text.csv" typedef struct szemely { char nev[10]; int kor; }szemely; int main() { szemely temp[4]; FILE *fo = fopen(FILENAME, "r"); if (fo) { char line[256]; // header olvasas if (fgets(line, sizeof(line), fo) == NULL) { // hiba! } int i = 0; while (fgets(line, sizeof(line), fo) != NULL) { int p = 0; while (line[p] != ';') { temp[i].nev[p] = line[p]; ++p; } temp[i].nev[p] = 0; temp[i].kor = atoi(&line[p + 1]); printf("Nev: %s Kora: %d\n", &temp[i].nev, temp[i].kor); ++i; } fclose(fo); } else { printf("Hiba, %d\n", errno); } return 0; }
Próbáld meg ezt.

ps: Mi a tököm? a proghu megeszi a formázást? 
Mutasd a teljes hozzászólást!

Címkék
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd