Tutvuge CSV-faili pakkuva programmi dokumentatsiooniga. Määrake väljade arv igal real ja iga välja vorming. Näiteks kui programm pakub CSV-faili järgmiste andmetega: 1, "test", 34.5 Märgistate alla kolm välja: üks täisarv, üks string ja üks ujukomaarv.
Looge struktuur, mis sisaldab andmeliiget iga CSV-s tuvastatud välja jaoks. Kasutades esitatud näidisrida 1, "test", 34.5 vajate järgmist struktuuri: struct data { int col1; char *col2; float col3; };
Looge oma programmis meetod, mis käsitleb CSV-faili lugemist. See peab olema ülejäänud programmile juurdepääsetav ja tõenäoliselt peab töötama tavaliste andmestruktuuride kallal, et muud meetodid saaksid sisseloetud andmetele juurde pääseda. Edastage parameeter viitega, et eemaldada vajadus tagastatava väärtuse järele. Funktsiooni prototüübi näide oleks: void ParseCSV( char *failinimi, andmed& sisend );
Loo failiobjekt, mis loeb andmed sisse, kasutades järgmist koodi: FILE * pInput;
Looge piisavalt suur märgipuhver, et mahutada korraga ühte faili rida. Keelepiirangute tõttu on kõige lihtsam viis seda teha piisavalt suure tähemassiivi deklareerimine, näiteks: #define BUFFER_SIZE 1024
Avage fail järgmise koodiga ja määrake see oma varem loodud FILE objektile: pInput = fopen("failinimi", "r")
fgets (buf, suurus (buf), pInput)
Parsige CSV-faili funktsiooni "strtok" abil. Looge märkidele osutamiseks uus märgistring ja lähtestage see ülaltoodud rea andmetega: char *tok = strtok (buf, ",")
Teisendage saadud žetoon sobivateks andmeteks. Kasutades näidet rida: 1, "test", 3.45 teisendage "tok"-s sisalduvad andmed täisarvuks, kasutades järgmist koodi: rida.col1 = atoi (tok);
Järgmiste sama rea lugemiste jaoks edastage varem loetud puhvristringi asemel parameeter "strtok" NULL: tok = strtok (NULL, ",") Seejärel teisendage luba sobivaks andmetüübiks. Kasutades näidet rida 1"test",3.45 Ühe rea sõelumiskood oleks: char *tok = strtok (buf, ","); rida.col1 = atoi (tok); tok = strtok (NULL, ","); rida.col2 = tok; tok = strtok (NULL, ","); rida.col3 = atof (tok);
Tehke seda kõigi CSV-faili iga rea kirjete puhul. Funktsioon "strtok" jätkab andmete esitamist komaväärtuste vahel, kuni puhvris olevad andmed saavad otsa, siis tagastab see väärtuse NULL. See näitab, et olete rea lõpetanud.
Hoiatus
Funktsioon "fopen" võib vea korral tagastada NULL-i – kontrollige faili enne selle kasutamist kindlasti üle. Mõnel juhul ei pruugi pakutavad märgid olla oodatud vormingus. Kontrollige kindlasti oma andmeid enne pimesi teisendamist, kontrollides tavalisi veaväärtusi (tühi string, NULL jne).