C I / O datoteke: Stvaranje, otvaranje, čitanje, pisanje i zatvaranje datoteke

Sadržaj:

Anonim

C Upravljanje datotekama

Datoteka se može koristiti za pohranu velike količine trajnih podataka. Kao i mnogi drugi jezici, "C" nudi sljedeće funkcije za upravljanje datotekama,

  1. Stvaranje datoteke
  2. Otvaranje datoteke
  3. Čitanje datoteke
  4. Zapisivanje u datoteku
  5. Zatvaranje datoteke

Slijede najvažnije funkcije upravljanja datotekama dostupne u 'C'

funkcija Svrha
fopen () Stvaranje datoteke ili otvaranje postojeće datoteke
fclose () Zatvaranje datoteke
fprintf () Zapisivanje bloka podataka u datoteku
fscanf () Čitanje podataka bloka iz datoteke
getc () Čita jedan znak iz datoteke
putc () U datoteku upisuje jedan znak
getw () Čita cijeli broj iz datoteke
putw () Zapisivanje cijelog broja u datoteku
fseek () Postavlja položaj pokazivača datoteke na određeno mjesto
ftell () Vraća trenutni položaj pokazivača datoteke
premotaj unatrag () Postavlja pokazivač datoteke na početak datoteke

U ovom vodiču naučit ćete-

  • Kako stvoriti datoteku
  • Kako zatvoriti datoteku:
  • Zapisivanje u datoteku
    • fputc () funkcija:
    • fputs () funkcija:
    • fprintf () Funkcija:
  • Čitanje podataka iz datoteke
  • Interaktivno čitanje i pisanje datoteka pomoću getc i putc

Kako stvoriti datoteku

Kad god želite raditi s datotekom, prvi korak je stvaranje datoteke. Datoteka nije ništa drugo do prostor u memoriji u kojem se pohranjuju podaci.

Za stvaranje datoteke u programu 'C' koristi se sljedeća sintaksa,

FILE *fp;fp = fopen ("file_name", "mode");

U gornjoj sintaksi datoteka je struktura podataka koja je definirana u standardnoj knjižnici.

fopen je standardna funkcija koja se koristi za otvaranje datoteke.

  • Ako datoteka nije prisutna u sustavu, tada se kreira, a zatim otvara.
  • Ako je datoteka već prisutna u sustavu, tada se izravno otvara pomoću ove funkcije.

fp je pokazivač datoteke koji upućuje na datoteku tipa.

Kad god otvorite ili izradite datoteku, morate navesti što ćete raditi s datotekom. Datoteka u programiranju 'C' može se stvoriti ili otvoriti za čitanje / pisanje. Način se koristi za određivanje želite li datoteku otvoriti u bilo koju od dolje navedenih svrha. Slijede različite vrste načina rada u programiranju 'C' koje se mogu koristiti tijekom rada s datotekom.

Način datoteke Opis
r Otvorite datoteku za čitanje. Ako je datoteka u načinu čitanja, tada se podaci ne brišu ako je datoteka već prisutna u sustavu.
w Otvorite datoteku za pisanje. Ako je datoteka u načinu pisanja, tada se stvara nova datoteka ako datoteka uopće ne postoji. Ako je datoteka već prisutna u sustavu, tada su svi podaci unutar datoteke skraćeni i otvoreni za pisanje.
a Otvorite datoteku u načinu dodavanja. Ako je datoteka u načinu dodavanja, tada se datoteka otvara. Sadržaj datoteke se ne mijenja.
r + otvoren za čitanje i pisanje od početka
w + otvoren za čitanje i pisanje, prepisivanje datoteke
a + otvoren za čitanje i pisanje, dodavanje u datoteku

U datoj sintaksi naziv datoteke i način rada navedeni su kao nizovi, stoga moraju uvijek biti zatvoreni unutar dvostrukih navodnika.

Primjer:

#include int main() {FILE *fp;fp = fopen ("data.txt", "w");}

Izlaz:

Datoteka se kreira u istoj mapi u kojoj ste spremili kôd.

Možete odrediti put na kojem želite stvoriti datoteku

#include int main() {FILE *fp;fp = fopen ("D://data.txt", "w");}

Kako zatvoriti datoteku

Datoteku treba uvijek zatvoriti kad god su operacije nad datotekom gotove. To znači da su sadržaj i veze do datoteke ukinuti. To sprječava slučajno oštećenje datoteke.

'C' pruža funkciju fclose za izvođenje operacije zatvaranja datoteke. Sintaksa fclose je sljedeća,

fclose (file_pointer);

Primjer:

FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);

Funkcija fclose uzima kao argument pokazivač datoteke. Datoteka povezana s pokazivačem datoteke zatvara se uz pomoć funkcije fclose. Vraća 0 ako je zatvaranje bilo uspješno i EOF (kraj datoteke) ako je došlo do pogreške tijekom zatvaranja datoteke.

Nakon zatvaranja datoteke, isti pokazivač datoteke može se koristiti i s drugim datotekama.

U programiranju 'C' datoteke se automatski zatvaraju kad se program prekine. Ručno zatvaranje datoteke pisanjem funkcije fclose dobra je praksa programiranja.

Zapisivanje u datoteku

U C, kada pišete u datoteku, znakovi novog reda '\ n' moraju se izričito dodati.

Biblioteka stdio nudi potrebne funkcije za pisanje u datoteku:

  • fputc (char, file_pointer) : Zapisuje znak u datoteku na koju ukazuje file_pointer.
  • fputs (str, file_pointer) : Zapisuje niz u datoteku na koju ukazuje file_pointer.
  • fprintf (file_pointer, str, variable_lists) : Ispisuje niz u datoteku na koju ukazuje file_pointer. Niz po želji može sadržavati specifikatore formata i popis varijabli varia_lists.

Program u nastavku pokazuje kako izvršiti zapisivanje u datoteku:

fputc () funkcija:

#include int 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;}

Izlaz:

Gornji program upisuje jedan znak u datoteku fputc_test.txt dok ne dosegne simbol sljedećeg retka "\ n" što znači da je rečenica uspješno napisana. Proces je uzeti svaki znak niza i zapisati ga u datoteku.

  1. U gore navedenom programu stvorili smo i otvorili datoteku zvanu fputc_test.txt u načinu pisanja i deklarirali svoj niz koji će biti zapisan u datoteku.
  2. Radimo operaciju pisanja znakova po znakovima pomoću petlje for i stavljamo svaki znak u našu datoteku dok se ne nađe znak "\ n", a zatim se datoteka zatvori pomoću funkcije fclose.

fputs () funkcija:

#include int 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);}

IZLAZ:

  1. U gore navedenom programu stvorili smo i otvorili datoteku koja se zove fputs_test.txt u načinu pisanja.
  2. Nakon što izvršimo operaciju pisanja pomoću funkcije fputs () ispisujući tri različita niza
  3. Tada se datoteka zatvara pomoću funkcije fclose.

fprintf () Funkcija:

#include int 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;}

IZLAZ:

  1. U gore navedenom programu stvorili smo i otvorili datoteku nazvanu fprintf_test.txt u načinu pisanja.
  2. Nakon što se operacija pisanja izvede pomoću funkcije fprintf () pisanjem niza, tada se datoteka zatvara pomoću funkcije fclose.

Čitanje podataka iz datoteke

Postoje tri različite funkcije posvećene čitanju podataka iz datoteke

  • fgetc (file_pointer): Vraća sljedeći znak iz datoteke na koju pokazuje pokazivač datoteke. Kada se dođe do kraja datoteke, EOF se vraća natrag.
  • fgets (međuspremnik, n, pokazivač_datoteke): Čita n-1 znakova iz datoteke i sprema niz u međuspremnik u kojem je kao posljednji znak dodan NULL znak '\ 0'.
  • fscanf (pokazivač_datoteke, specifikacije_pretvoritelja, varijabilne_adrese) : Koristi se za raščlanjivanje i analizu podataka. Čita znakove iz datoteke i dodjeljuje ulaz popisu pokazivača na varijable variable_adresses pomoću specifikatora pretvorbe. Imajte na umu da kao i kod scanf, fscanf prestaje čitati niz kada se naiđe na razmak ili novi redak.

Sljedeći program prikazuje čitanje iz datoteke fputs_test.txt pomoću funkcija fgets (), fscanf () i fgetc ():

#include int 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;}

Proizlaziti:

----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

  1. U gornjem programu otvorili smo datoteku pod nazivom "fprintf_test.txt" koja je prethodno napisana pomoću funkcije fprintf () i sadrži niz "Učenje C s Guru99". Čitamo ga pomoću funkcije fgets () koja čita redak po redak gdje veličina međuspremnika mora biti dovoljna za obradu cijele linije.
  2. Datoteku ponovno otvaramo kako bismo datoteku pokazivača resetirali na točku na početku datoteke. Stvorite razne varijable nizova za obradu svake riječi zasebno. Ispišite varijable da biste vidjeli njihov sadržaj. Fscanf () se uglavnom koristi za izdvajanje i raščlanjivanje podataka iz datoteke.
  3. Ponovno otvorite datoteku da biste datoteku pokazivača vratili na točku na početak datoteke. Čitajte podatke i ispisujte ih iz znaka u datoteku pomoću funkcije getc () dok se ne naiđe na EOF izraz
  4. Nakon izvođenja datoteke s operacijama čitanja u različitim varijantama, datoteku smo opet zatvorili pomoću funkcije fclose.

Interaktivno čitanje i pisanje datoteka pomoću getc i putc

Ovo su najjednostavnije operacije datoteka. Getc označava get character, a putc znači put character. Ove dvije funkcije koriste se za obradu samo jednog znaka odjednom.

Sljedeći program prikazuje funkcije rukovanja datotekama u programiranju 'C':

#include int 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;}

Izlaz:

  1. U gore navedenom programu stvorili smo i otvorili datoteku nazvanu demo u načinu pisanja.
  2. Nakon što se izvrši operacija upisivanja, datoteka se zatvara pomoću funkcije fclose.
  3. Ponovo smo otvorili datoteku koja sad sadrži podatke u načinu čitanja. Izvršit će se while petlja dok se ne pronađe eof. Jednom kad se pronađe kraj datoteke, operacija će se prekinuti i podaci će se prikazati pomoću funkcije printf.
  4. Nakon izvođenja operacije čitanja datoteka se ponovno zatvara pomoću funkcije fclose.

Sažetak

  • Datoteka je prostor u memoriji u kojem se pohranjuju podaci.
  • Programiranje 'C' pruža razne funkcije za rad s datotekom.
  • Mehanizam manipulacije datotekama naziva se upravljanje datotekama.
  • Datoteka se mora otvoriti prije izvođenja operacija na njoj.
  • Datoteka se može otvoriti u načinu čitanja, pisanja ili dodavanja.
  • Funkcije Getc i Putc koriste se za čitanje i pisanje jednog znaka.
  • Funkcija fscanf () dopušta čitanje i raščlanjivanje podataka iz datoteke
  • Možemo čitati (pomoću funkcije getc ) cijelu datoteku petljom kako bismo pokrili svu datoteku dok se ne naiđe na EOF
  • U datoteku možemo pisati nakon stvaranja njezina imena, pomoću funkcije fprintf () i ona mora imati znak novog retka na kraju teksta niza.