Lägg denna kod till toppen av källfilen som ska läsa CSV
. 6
Skapa ett file-objekt , vilket kommer att läsa in data med hjälp av följande kod :
fILE * pInput ,
7
Skapa en karaktär buffert stor nog att rymma en raden i filen på en gång . På grund av begränsningar i språket , det enklaste sättet att göra detta är att deklarera en karaktär array av en tillräckligt stor storlek , som med :
# define BUFFER_SIZE 1024
char buf [ BUFFER_SIZE ] ;
8
Öppna filen med följande kod , och tilldela den till din tidigare skapade filen objekt :
pInput = fopen ( " filnamn ", " r " ) katalog
9
Läs i en rad i filen med följande kod :
fgets (BUF , sizeof ( buf ) , pInput )
10
tolka CSV hjälp funktionen " strtok " . Skapa en ny teckensträng att peka på polletter och initiera den med data från linjen läst i ovan :
char * tok = strtok ( buf , " , " )
11
Konvertera den mottagna symbolen i lämpliga uppgifter . Med exemplet raden :
1 , "test " , 3,45
konvertera uppgifterna i " tok " till ett heltal med följande kod :
row.col1 = atoi ( tok ) ,
12
för efterföljande läser från samma linje , passerar " strtok " en NULL parameter istället för bufferten strängen du läser in tidigare :
tok = strtok ( NULL , " , " ) katalog
sedan konvertera symbolen till rätt datatyp . Med exemplet
linjen
1 , "test " , skulle 3,45
tolkningskoden för en enda linje vara :
char * tok = strtok ( buf , " , " ) ;
row.col1 = atoi ( tok ) ;
tok = strtok (NULL , " , ");
row.col2 = tok ;
tok = strtok ( NULL , " , " ) ;
row.col3 = atof ( tok ) ,
13
Gör detta för alla poster på varje rad i CSV . Funktionen " strtok " kommer att fortsätta att tillhandahålla data mellan kommatecken värden tills det rinner ut ur data i bufferten , varefter den kommer att returnera null . Detta kommer att indikera att du är klar med linjen .