Legg denne koden til toppen av kilden filen som skal lese CSV
. 6
Lag en fil objekt, som vil lese i data, ved hjelp av følgende kode :
fILE * pInput ;
7
Lag en karakter buffer stor nok til å holde en linje i filen om gangen. På grunn av begrensninger i språket , den enkleste måten å gjøre dette på er å erklære en karakter rekke en tilstrekkelig stor størrelse , som med : en
# define BUFFER_SIZE 1024
røye buf [ BUFFER_SIZE ] ;
8
Åpne filen med følgende kode , og tilordne den til din tidligere opprettet fIL objekt : en
pInput = fopen ( " filnavn ", " r")
9
Les i en linje av filen ved hjelp av følgende kode :
fgets (BUF , sizeof ( BUF) , pInput )
10
analysere CSV hjelp funksjonen " strtok " . Opprett en ny tegnstreng å peke på symboler, og starte den med data fra linjen lest i ovenfor:
char * Tok = strtok ( buf , " ,")
11
omformer de mottatte tegn i de tilhørende data . Ved å bruke eksempelet linje:
1 , "test" , 3,45
konvertere dataene i " Tok" til et heltall ved hjelp av følgende kode :
row.col1 = atoi (TOK ),
12
for etterfølgende leser fra samme linje , pass " strtok " en NULL parameter i stedet for buffer strengen du leser i før : en
TOK = strtok ( NULL , " ,")
Deretter konvertere token til riktig datatype. Ved å bruke eksempelet linjen
1 , "test" , ville 3,45
parsing kode for en enkelt linje være : en
char * Tok = strtok ( buf , "," ) ;
row.col1 = atoi (TOK ),
TOK = strtok ( NULL , " , ");
row.col2 = TOK ;
< p> TOK = strtok ( NULL , " , ");
row.col3 = atof (TOK ),
13
Gjør dette for alle oppføringene på hver linje i CSV. Funksjonen " strtok " vil fortsette å gi data mellom komma verdier før den går tom for data i bufferen , og da vil det returnere NULL . Dette vil indikere at du er ferdig med linjen .