1. fotoaparati
  2. Car Audio & Electronics
  3. Home Audio
  4. Osobni Audio
  5. TV
  6. Pametna kuća
  >> Hrvatska Electronic Technology >  >> Pametna kuća >> Pametan život

Kako čitati CSV datoteku u C

Mnogi softverski proizvodi koji se bave brojevima i izračunima imaju mogućnost ispisivanja podataka u datoteku s vrijednostima odvojenim zarezima (CSV). Ovaj format može biti učinkovit način prijenosa podataka između različitih programa, budući da je čitljiv i prilično jednostavan za rukovanje. Mnogi C programi koji rade s podacima vjerojatno će u nekom trenutku morati čitati iz CSV datoteke.

1. korak

Pogledajte dokumentaciju programa koji daje CSV datoteku. Odredite broj polja u svakom retku, kao i format svakog polja. Na primjer, ako program pruža CSV sa sljedećim podacima:1, "test", 34.5 Označili biste tri polja:jedan cijeli broj, jedan niz i jedan broj s pomičnim zarezom.

2. korak

Stvorite strukturu koja sadrži podatkovni član za svako polje identificirano u CSV-u. Koristeći navedeni primjer retka od 1, "test", 34.5, trebat će vam sljedeća struktura:struct data { int col1; char *col2; float col3; };

3. korak

Napravite metodu u svom programu koja će upravljati čitanjem CSV datoteke. To će morati biti dostupno ostatku vašeg programa i vjerojatno će morati raditi na uobičajenim strukturama podataka kako bi druge metode mogle pristupiti podacima koji su učitani. Proslijedite parametar referencom kako biste uklonili potrebu za povratnom vrijednošću . Primjer prototipa funkcije bio bi:void ParseCSV( char *filename, data&input );

4. korak

Uključite standardno IO zaglavlje pomoću sljedećeg koda:#include Dodajte ovaj kod na vrh izvorne datoteke koja će čitati CSV.

Korak 5

Uključite biblioteku nizova kako biste omogućili manipulaciju CSV podacima pomoću sljedećeg koda:#include Dodajte ovaj kod na vrh izvorne datoteke koja će čitati CSV.

Korak 6

Stvorite objekt datoteke koji će čitati podatke pomoću sljedećeg koda:FILE * pInput;

7. korak

Napravite međuspremnik znakova koji je dovoljno velik da sadrži jedan po jedan redak datoteke. Zbog ograničenja jezika, najjednostavniji način da to učinite je deklarirati niz znakova dovoljno velike veličine, kao s:#define BUFFER_SIZE 1024

char buf[BUFFER_SIZE];

Korak 8

Otvorite datoteku sa sljedećim kodom i dodijelite je svom prethodno stvorenom objektu FILE:pInput =fopen("filename," "r")

Korak 9

Pročitajte u retku datoteke pomoću sljedećeg koda:

fgets(buf, sizeof(buf), pInput)

Korak 10

Raščlanite CSV pomoću funkcije "strtok". Stvorite novi niz znakova koji će pokazivati ​​na tokene i inicijalizirajte ga podacima iz gornjeg retka:char *tok =strtok(buf, ",")

Korak 11

Pretvorite primljeni token u odgovarajuće podatke. Koristeći redak primjera:1, "test", 3.45 pretvorite podatke sadržane u "tok" u cijeli broj pomoću sljedećeg koda:row.col1 =atoi(tok);

Korak 12

Za naknadna čitanja iz istog retka, proslijedite "strtok" parametar NULL umjesto niza međuspremnika koji ste pročitali prije:tok =strtok(NULL, ",") Zatim pretvorite token u odgovarajući tip podataka. Korištenje primjera linije 1,"test",3.45 Kod raščlambe za jednu liniju bio bi:char *tok =strtok(buf, ","); row.col1 =atoi(tok); tok =strtok(NULL, ","); row.col2 =tok; tok =strtok(NULL, ","); row.col3 =atof(tok);

Korak 13

Učinite to za sve unose u svakom retku CSV-a. Funkcija "strtok" nastavit će pružati podatke između vrijednosti zareza sve dok ne ostane bez podataka u međuspremniku, a tada će vratiti NULL. Ovo će značiti da ste završili s linijom.

Savjet

Enkapsulirajte svoju konverziju podataka u drugu metodu kako bi kôd bio čitljiviji. Metoda "fgets" vratit će NULL kada je datoteka u potpunosti pročitana. Upotrijebite ovo u while petlji za obilazak cijele datoteke.

Upozorenje

Funkcija "fopen" može vratiti NULL ako je došlo do pogreške--prije upotrebe provjerite svoju datoteku. U nekim slučajevima dostavljeni tokeni možda neće biti očekivanog formata. Obavezno provjerite svoje podatke prije naslijepo pretvaranja provjerom uobičajenih vrijednosti pogreške (prazan niz, NULL itd.).


  1. Kako to pretvoriti u GPX datoteke
  2. Kako UvozCSV datoteke u BlackBerry
  3. Kako čitati AT & T File
  4. Kako stvoriti POI CSV datoteke
  5. Kako čitati šifrirane datoteke