C Upravljanje datotek
Datoteko lahko uporabite za shranjevanje velike količine trajnih podatkov. Tako kot mnogi drugi jeziki tudi "C" nudi naslednje funkcije za upravljanje datotek,
- Ustvarjanje datoteke
- Odpiranje datoteke
- Branje datoteke
- Zapis v datoteko
- Zapiranje datoteke
Sledijo najpomembnejše funkcije za upravljanje datotek, ki so na voljo v 'C'
funkcijo | namen |
fopen () | Ustvarjanje datoteke ali odpiranje obstoječe datoteke |
fclose () | Zapiranje datoteke |
fprintf () | Zapis bloka podatkov v datoteko |
fscanf () | Branje podatkov bloka iz datoteke |
getc () | Prebere en sam znak iz datoteke |
putc () | V datoteko zapiše en sam znak |
getw () | Prebere celo število iz datoteke |
putw () | Zapisovanje celega števila v datoteko |
fseek () | Nastavi položaj kazalca datoteke na določeno mesto |
ftell () | Vrne trenutni položaj kazalca datoteke |
previjanje nazaj () | Kazalec datoteke nastavi na začetek datoteke |
V tej vadnici boste izvedeli-
- Kako ustvariti datoteko
- Kako zapreti datoteko:
- Pisanje v datoteko
- fputc () Funkcija:
- fputs () Funkcija:
- fprintf () Funkcija:
- Branje podatkov iz datoteke
- Interaktivno branje datotek in pisanje z getc in putc
Kako ustvariti datoteko
Kadar želite delati z datoteko, je prvi korak ustvariti datoteko. Datoteka ni nič drugega kot prostor v pomnilniku, kjer so shranjeni podatki.
Za ustvarjanje datoteke v programu 'C' se uporablja naslednja sintaksa,
FILE *fp;fp = fopen ("file_name", "mode");
V zgornji sintaksi je datoteka podatkovna struktura, ki je definirana v standardni knjižnici.
fopen je standardna funkcija, ki se uporablja za odpiranje datoteke.
- Če datoteka ni v sistemu, se ustvari in odpre.
- Če je datoteka že prisotna v sistemu, se s to funkcijo neposredno odpre.
fp je kazalec datoteke, ki kaže na datoteko tipa.
Vsakič, ko odprete ali ustvarite datoteko, morate določiti, kaj boste z datoteko storili. Datoteko v programiranju 'C' lahko ustvarite ali odprete za branje / pisanje. Način se uporablja za določitev, ali želite datoteko odpreti za katerega koli od spodaj navedenih namenov. Sledijo različne vrste načinov v programiranju 'C', ki jih je mogoče uporabiti med delom z datoteko.
Datotečni način | Opis |
r | Odprite datoteko za branje. Če je datoteka v načinu branja, se podatki ne izbrišejo, če je datoteka že prisotna v sistemu. |
w | Odprite datoteko za pisanje. Če je datoteka v načinu za pisanje, se ustvari nova datoteka, če datoteka sploh ne obstaja. Če je datoteka že prisotna v sistemu, so vsi podatki v njej okrnjeni in odprti za pisanje. |
a | Odprite datoteko v načinu dodajanja. Če je datoteka v načinu za dodajanje, se datoteka odpre. Vsebina datoteke se ne spremeni. |
r + | odprt za branje in pisanje |
w + | odprt za branje in pisanje, prepisovanje datoteke |
a + | odprt za branje in pisanje, dodajanje k datoteki |
V dani sintaksi sta ime datoteke in način določena kot niza, zato morata biti vedno zaprta v dvojne narekovaje.
Primer:
#includeint main() {FILE *fp;fp = fopen ("data.txt", "w");}
Izhod:
Datoteka je ustvarjena v isti mapi, kamor ste shranili kodo.
Določite lahko pot, na kateri želite ustvariti datoteko
#includeint main() {FILE *fp;fp = fopen ("D://data.txt", "w");}
Kako zapreti datoteko
Datoteko je vedno treba zapreti, kadar so operacije z datoteko končane. Pomeni, da se vsebina in povezave do datoteke prekinejo. To preprečuje nenamerne poškodbe datoteke.
'C' omogoča funkcijo fclose za izvajanje operacije zapiranja datotek. Sintaksa fclose je naslednja,
fclose (file_pointer);
Primer:
FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);
Funkcija fclose za argument vzame kazalec datoteke. Datoteka, povezana s kazalcem datoteke, se nato s pomočjo funkcije fclose zapre. Vrne 0, če je bilo zapiranje uspešno, in EOF (konec datoteke), če je med zapiranjem datoteke prišlo do napake.
Po zaprtju datoteke lahko isti kazalec datoteke uporabite tudi za druge datoteke.
Pri programiranju 'C' se datoteke samodejno zaprejo, ko se program zaključi. Ročno zapiranje datoteke s pisanjem funkcije fclose je dobra praksa programiranja.
Pisanje v datoteko
Ko pišete v datoteko C, je treba izrecno dodati znake za novo vrstico '\ n'.
Knjižnica stdio ponuja potrebne funkcije za zapisovanje v datoteko:
- fputc (char, file_pointer) : V datoteko zapiše znak, na katerega kaže file_pointer.
- fputs (str, file_pointer) : Zapiše niz v datoteko, na katero kaže file_pointer.
- fprintf (file_pointer, str, variable_lists) : Natisne niz v datoteko, na katero kaže file_pointer. Niz lahko po želji vključuje specifikatorje formata in seznam spremenljivk varia_lists.
Spodnji program prikazuje, kako izvesti zapis v datoteko:
fputc () Funkcija:
#includeint main() {int i;FILE * fptr;char fn[50];char str[] = "Guru99 Rocks\n";fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode"for (i = 0; str[i] != '\n'; i++) {/* write to file using fputc() function */fputc(str[i], fptr);}fclose(fptr);return 0;}
Izhod:
Zgornji program zapisuje en znak v datoteko fputc_test.txt, dokler ne doseže naslednjega znaka "\ n", kar pomeni, da je bil stavek uspešno napisan. Postopek je, da vzamemo vsak znak polja in ga zapišemo v datoteko.
- V zgornjem programu smo v načinu pisanja ustvarili in odprli datoteko z imenom fputc_test.txt in razglasili naš niz, ki bo zapisan v datoteko.
- Z zanko for izvajamo operacijo pisanja po znakih in vstavimo vsak znak v datoteko, dokler ne zasledimo znaka "\ n", nato pa datoteko zapremo s funkcijo fclose.
fputs () Funkcija:
#includeint main() {FILE * fp;fp = fopen("fputs_test.txt", "w+");fputs("This is Guru99 Tutorial on fputs,", fp);fputs("We don't need to use for loop\n", fp);fputs("Easier than fputc function\n", fp);fclose(fp);return (0);}
IZHOD:
- V zgornjem programu smo v načinu pisanja ustvarili in odprli datoteko z imenom fputs_test.txt.
- Ko naredimo operacijo pisanja s pomočjo funkcije fputs () s pisanjem treh različnih nizov
- Nato se datoteka s funkcijo fclose zapre.
fprintf () Funkcija:
#includeint main() {FILE *fptr;fptr = fopen("fprintf_test.txt", "w"); // "w" defines "writing mode"/* write to file */fprintf(fptr, "Learning C with Guru99\n");fclose(fptr);return 0;}
IZHOD:
- V zgornjem programu smo v načinu pisanja ustvarili in odprli datoteko z imenom fprintf_test.txt.
- Ko se operacija pisanja izvede s funkcijo fprintf () s pisanjem niza, se datoteka s funkcijo fclose zapre.
Branje podatkov iz datoteke
Obstajajo tri različne funkcije, namenjene branju podatkov iz datoteke
- fgetc (file_pointer): vrne naslednji znak iz datoteke, na katero kaže kazalec datoteke. Ko je konec datoteke dosežen, se EOF pošlje nazaj.
- fgets (medpomnilnik, n, kazalec_datoteke): prebere n-1 znakov iz datoteke in shrani niz v vmesni pomnilnik, v katerem je kot zadnji znak dodan NULL znak '\ 0'.
- fscanf (kazalec_datoteke, specifikacije_predelave, spremenljive_adrese) : Uporablja se za razčlenitev in analizo podatkov. Prebere znake iz datoteke in vhodne podatke dodeli seznamu spremenljivk s kazalci varia_adresses s pomočjo pretvorniških specifikatorjev. Upoštevajte, da fscanf, tako kot pri scanf, neha brati niz, ko naleti na presledek ali novo vrstico.
Naslednji program prikazuje branje iz datoteke fputs_test.txt z uporabo funkcij fgets (), fscanf () in fgetc ():
#includeint main() {FILE * file_pointer;char buffer[30], c;file_pointer = fopen("fprintf_test.txt", "r");printf("----read a line----\n");fgets(buffer, 50, file_pointer);printf("%s\n", buffer);printf("----read and parse data----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerchar str1[10], str2[2], str3[20], str4[2];fscanf(file_pointer, "%s %s %s %s", str1, str2, str3, str4);printf("Read String1 |%s|\n", str1);printf("Read String2 |%s|\n", str2);printf("Read String3 |%s|\n", str3);printf("Read String4 |%s|\n", str4);printf("----read the entire file----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerwhile ((c = getc(file_pointer)) != EOF) printf("%c", c);fclose(file_pointer);return 0;}
Rezultat:
----read a line----Learning C with Guru99----read and parse data----Read String1 |Learning|Read String2 |C|Read String3 |with|Read String4 |Guru99|----read the entire file----Learning C with Guru99
- V zgornjem programu smo odprli datoteko z imenom "fprintf_test.txt", ki je bila prej napisana s funkcijo fprintf () in vsebuje niz "Učenje C z Guru99". Preberemo ga s funkcijo fgets (), ki bere vrstico za vrstico, kjer mora biti velikost medpomnilnika zadostna za obdelavo celotne vrstice.
- Datoteko znova odpremo, da datoteko kazalca ponastavimo na točko na začetku datoteke. Ustvarite različne spremenljivke nizov, s katerimi boste obravnavali vsako besedo posebej. Natisnite spremenljivke, da si ogledate njihovo vsebino. Fscanf () se v glavnem uporablja za pridobivanje in razčlenjevanje podatkov iz datoteke.
- Znova odprite datoteko, da ponastavite kazalec na točko na začetku datoteke. Preberite podatke in jih s funkcijo getc () natisnite iz datoteke po znak, dokler ne najdete stavka EOF
- Po izvedbi datoteke branja z različnimi različicami smo datoteko znova zaprli s funkcijo fclose.
Interaktivno branje datotek in pisanje z getc in putc
To so najpreprostejše datoteke. Getc pomeni get karakter, Putc pa pomeni Put znak. Ti dve funkciji se hkrati uporabljata za obdelavo samo enega znaka.
Naslednji program prikazuje funkcije obdelave datotek pri programiranju 'C':
#includeint main() {FILE * fp;char c;printf("File Handling\n");//open a filefp = fopen("demo.txt", "w");//writing operationwhile ((c = getchar()) != EOF) {putc(c, fp);}//close filefclose(fp);printf("Data Entered:\n");//readingfp = fopen("demo.txt", "r");while ((c = getc(fp)) != EOF) {printf("%c", c);}fclose(fp);return 0;}
Izhod:
- V zgornjem programu smo v načinu pisanja ustvarili in odprli datoteko z imenom demo.
- Po izvedbi operacije pisanja se datoteka s funkcijo fclose zapre.
- Ponovno smo odprli datoteko, ki zdaj vsebuje podatke v načinu branja. Zanka while se bo izvajala, dokler ne najde eof. Ko najdete konec datoteke, se postopek zaključi in podatki se prikažejo s funkcijo printf.
- Po izvedbi operacije branja se datoteka znova zapre s funkcijo fclose.
Povzetek
- Datoteka je prostor v pomnilniku, v katerem so shranjeni podatki.
- Programiranje 'C' ponuja različne funkcije za obdelavo datoteke.
- Mehanizem manipulacije z datotekami se imenuje upravljanje datotek.
- Datoteko je treba odpreti, preden jo izvedete.
- Datoteko lahko odprete v načinu branja, pisanja ali dodajanja.
- Funkciji Getc in Putc se uporabljata za branje in pisanje enega samega znaka.
- Funkcija fscanf () dovoljuje branje in razčlenitev podatkov iz datoteke
- Lahko preberemo (s pomočjo funkcije getc ) celotno datoteko tako, da zapremo celotno datoteko, dokler ne naletimo na EOF
- V datoteko lahko pišemo po ustvarjanju njenega imena s pomočjo funkcije fprintf () in na koncu besedila niza mora imeti znak nove vrstice.