Mange software -produkter , der beskæftiger sig med tal og beregninger har evnen til output data i en kommaseparerede værdier (CSV ) fil. Dette format kan være en effektiv måde at transportere data mellem forskellige programmer , som det kan læses og forholdsvis let at manipulere. Mange C-programmer , der beskæftiger sig med data sandsynligvis bliver nødt til at læse fra en CSV-fil på et tidspunkt . Ting du skal
Text editor
Compiler
CSV-fil input
Vis Flere Instruktioner
1
Se dokumentationen for det program, der leverer CSV fil . Bestem antallet af felter i hver linje , samt formatet for hvert felt. For eksempel, hvis et program indeholder en CSV med følgende data : , salg
1 , "test" 34,5
Du ville markere ned tre områder: én heltal , en snor og en decimaltal .
2
Opret en struktur, der indeholder en data- medlem for hvert felt identificeret i CSV . Brug den medfølgende eksempel linje 1 , "test" , 34,5 ville du bruge følgende struktur : Hej
struct data
{
int col1 ;
char * col2 ,
float col3 ,
};
3
Oprette en metode i dit program , der vil håndtere at læse CSV-filen. Dette skal være tilgængelige for resten af dit program , og vil sandsynligvis nødt til at arbejde på fælles datastrukturer , så andre metoder kan få adgang til data, der er blevet læst i. Før parameter med henvisning til fjerne behovet for en returværdi . Et eksempel funktionsprototype ville være : Hej
void ParseCSV ( char * filnavn , data & input ),
4
Medtag standard IO header ved hjælp af følgende kode : Hej
# include
Tilføj denne kode til toppen af kildefilen , der vil være at læse CSV .
5.
Medtag strengen biblioteket for at aktivere manipulation af CSV data ved hjælp af følgende kode : Hej
# include
Tilføj denne kode til toppen af kildefilen , der vil være at læse CSV
. 6
Opret en fil objekt , som vil læse i dataene ved hjælp af følgende kode : Hej
fILE * pInput ,
7
Opret en karakter buffer stor nok til at holde en linje af filen ad gangen. På grund af begrænsninger i sproget, den mest ligefremme måde at gøre dette på er at erklære en karakter vifte af en tilstrækkelig stor størrelse , som med : Hej
# define BUFFER_SIZE 1024
char buf [ BUFFER_SIZE ] ;
8
Åbn filen med følgende kode , og tildele den til din tidligere oprettede fILE objekt : Hej
pInput = fopen ( " filename ", " r" )
9
Læs i en linje af filen ved hjælp af følgende kode:
fgets (BUF , sizeof ( bUF) , pInput )
10
parse CSV hjælp funktionen " strtok " . Opret en ny tegnstreng til at pege på tokens , og initialisere den med data fra strækningen læses i ovenstående :
char * tok = strtok (BUF , ",")
11 < p > Konverter de modtagne token ind i de relevante data. Brug eksemplet linie : Hej
1 , "test" , 3,45
konvertere data , der er indeholdt i " tok " til et heltal ved hjælp af følgende kode : Hej
row.col1 = atoi ( tok )
12
til efterfølgende læser fra den samme linje , pass " strtok " a NULL parameter i stedet for buffer streng, du læser i før : Hej
tok = strtok ( NULL, ",")
derefter konvertere token til den rette datatype . Brug eksemplet linie
1 , "test" , ville 3,45
parsing kode til en enkelt linje være : Hej
char * tok = strtok (BUF , "," ),
row.col1 = atoi ( tok ),
tok = strtok ( NULL, ",") ;
row.col2 = tok ;
< p> tok = strtok ( NULL, ",") ;
row.col3 = atof ( tok ),
13
Gør dette for alle posterne på hver linje i CSV . Funktionen " strtok " vil fortsætte med at levere data mellem komma værdier, indtil det løber ud af data i bufferen , hvorefter det vil vende tilbage NULL . Dette vil indikere, at du er færdig med den linje .