C-tiedostojen I / O: Luo, avaa, lue, kirjoita ja sulje tiedosto

Sisällysluettelo:

Anonim

C Tiedostojen hallinta

Tiedostoa voidaan käyttää suuren määrän pysyvien tietojen tallentamiseen. Kuten monet muutkin kielet, myös C tarjoaa seuraavat tiedostojen hallintatoiminnot,

  1. Tiedoston luominen
  2. Tiedoston avaaminen
  3. Tiedoston lukeminen
  4. Kirjoittaminen tiedostoon
  5. Tiedoston sulkeminen

Seuraavassa on tärkeimmät tiedostossa C käytettävissä olevat tiedostojen hallintatoiminnot

toiminto tarkoitus
fopen () Tiedoston luominen tai olemassa olevan tiedoston avaaminen
fclose () Tiedoston sulkeminen
fprintf () Tietolohkon kirjoittaminen tiedostoon
fscanf () Lohkotietojen lukeminen tiedostosta
getc () Lukee yhden merkin tiedostosta
putc () Kirjoittaa yhden merkin tiedostoon
getw () Lukee kokonaisluvun tiedostosta
putw () Kokonaisluvun kirjoittaminen tiedostoon
fseek () Asettaa tiedostosoittimen sijainnin määritettyyn sijaintiin
ftell () Palauttaa tiedostosoittimen nykyisen sijainnin
kelaa taaksepäin () Asettaa tiedoston osoittimen tiedoston alkuun

Tässä opetusohjelmassa opit-

  • Kuinka luoda tiedosto
  • Tiedoston sulkeminen:
  • Kirjoittaminen tiedostoon
    • fputc () Toiminto:
    • tulot () Toiminto:
    • fprintf () Toiminto:
  • Tietojen lukeminen tiedostosta
  • Interaktiivinen tiedosto Lue ja kirjoita getc: llä ja putc: llä

Kuinka luoda tiedosto

Aina kun haluat työskennellä tiedoston kanssa, ensimmäinen vaihe on luoda tiedosto. Tiedosto ei ole muuta kuin tilaa muistissa, johon tiedot on tallennettu.

Jos haluat luoda tiedoston C-ohjelmaan syntaksin mukaisesti,

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

Edellä olevassa syntaksissa tiedosto on tietorakenne, joka määritetään standardikirjastossa.

fopen on vakiotoiminto, jota käytetään tiedoston avaamiseen.

  • Jos tiedostoa ei ole järjestelmässä, se luodaan ja avataan.
  • Jos tiedosto on jo järjestelmässä, se avataan suoraan tällä toiminnolla.

fp on tiedostosoitin, joka osoittaa tyyppitiedostoon.

Aina kun avaat tai luot tiedoston, sinun on määritettävä, mitä aiot tehdä tiedostolle. C-ohjelmointitiedosto voidaan luoda tai avata lukemista tai kirjoittamista varten. Tilaa käytetään määrittämään, haluatko avata tiedoston mihin tahansa alla annettuun tarkoitukseen. Seuraavassa on erilaisia ​​C-ohjelmointitiloja, joita voidaan käyttää tiedoston kanssa työskenneltäessä.

Tiedostotila Kuvaus
r Avaa tiedosto lukemista varten. Jos tiedosto on lukutilassa, tietoja ei poisteta, jos tiedosto on jo järjestelmässä.
w Avaa tiedosto kirjoitettavaksi. Jos tiedosto on kirjoitustilassa, uusi tiedosto luodaan, jos tiedostoa ei ole ollenkaan. Jos tiedosto on jo järjestelmässä, kaikki tiedoston sisällä olevat tiedot katkaistaan ​​ja avataan kirjoittamista varten.
a Avaa tiedosto liitetilassa. Jos tiedosto on liitetilassa, tiedosto avataan. Tiedoston sisältö ei muutu.
r + avoin lukemiseen ja kirjoittamiseen alusta alkaen
w + avoin lukemista ja kirjoittamista varten, tiedoston korvaaminen
a + avoin lukemista ja kirjoittamista varten, liitettynä tiedostoon

Annetussa syntaksissa tiedostonimi ja tila määritetään merkkijonoina, joten ne on aina suljettava lainausmerkkeihin.

Esimerkki:

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

Tuotos:

Tiedosto luodaan samaan kansioon, johon olet tallentanut koodisi.

Voit määrittää polun, johon haluat luoda tiedoston

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

Kuinka tiedosto suljetaan

Tiedosto on aina suljettava aina, kun tiedostossa olevat toiminnot ovat ohi. Se tarkoittaa, että tiedoston sisältö ja linkit lopetetaan. Tämä estää tiedoston vahingossa tapahtuvan vahingoittumisen.

'C' tarjoaa fclose-toiminnon tiedoston sulkemistoiminnon suorittamiseksi. Fclose-syntaksin muoto on seuraava,

fclose (file_pointer);

Esimerkki:

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

Fclose-funktio ottaa tiedostosoittimen argumentiksi. Tiedostosoittimeen liittyvä tiedosto suljetaan sitten fclose-toiminnon avulla. Se palauttaa 0, jos sulkeminen onnistui, ja EOF (tiedoston loppu), jos tiedoston sulkemisessa on tapahtunut virhe.

Tiedoston sulkemisen jälkeen samaa tiedostosoitinta voidaan käyttää myös muiden tiedostojen kanssa.

C-ohjelmoinnissa tiedostot sulkeutuvat automaattisesti, kun ohjelma lopetetaan. Tiedoston sulkeminen manuaalisesti kirjoittamalla fclose-toiminto on hyvä ohjelmointikäytäntö.

Kirjoittaminen tiedostoon

Kun kirjoitat tiedostoon C: ssä, uuden rivin merkit '\ n' on nimenomaisesti lisättävä.

Stdio-kirjasto tarjoaa tarvittavat toiminnot tiedostoon kirjoittamiseen:

  • fputc (char, file_pointer) : Se kirjoittaa merkin tiedostoon, johon file_pointer osoittaa.
  • fputs (str, file_pointer) : Se kirjoittaa merkkijonon tiedostoon, johon file_pointer osoittaa.
  • fprintf (file_pointer, str, variable_lists) : Se tulostaa merkkijonon tiedostoon, johon file_pointer osoittaa. Merkkijono voi valinnaisesti sisältää muodon määrittelijät ja luettelon muuttujista variable_lists.

Alla oleva ohjelma näyttää, miten tiedostoon kirjoitetaan:

fputc () Toiminto:

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

Tuotos:

Yllä oleva ohjelma kirjoittaa yhden merkin fputc_test.txt- tiedostoon, kunnes se saavuttaa seuraavan rivimerkin "\ n", mikä osoittaa, että lause on kirjoitettu onnistuneesti. Prosessi on ottaa taulukon kukin merkki ja kirjoittaa se tiedostoon.

  1. Edellä olevassa ohjelmassa olemme luoneet ja avanneet tiedoston nimeltä fputc_test.txt kirjoitustilassa ja ilmoittaneet merkkijonomme, joka kirjoitetaan tiedostoon.
  2. Teemme merkkikohtaisen kirjoitusoperaation käyttämällä silmukkaa ja laitamme jokaisen merkin tiedostoon, kunnes "\ n" merkki esiintyy, tiedosto suljetaan fclose-toiminnolla.

tulot () Toiminto:

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

LÄHTÖ:

  1. Edellä olevassa ohjelmassa olemme luoneet ja avaaneet tiedoston nimeltä fputs_test.txt kirjoitustilassa.
  2. Kun olemme tehneet kirjoitusoperaation käyttämällä fputs () -toimintoa kirjoittamalla kolme erilaista merkkijonoa
  3. Sitten tiedosto suljetaan fclose-toiminnolla.

fprintf () Toiminto:

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

LÄHTÖ:

  1. Edellä olevassa ohjelmassa olemme luoneet ja avanneet tiedoston nimeltä fprintf_test.txt kirjoitustilassa.
  2. Kun kirjoitusoperaatio on suoritettu käyttämällä fprintf () -funktiota kirjoittamalla merkkijono, tiedosto suljetaan fclose-funktiolla.

Tietojen lukeminen tiedostosta

Tiedoston tietojen lukemiseen on omistettu kolme erilaista toimintoa

  • fgetc (file_pointer): Se palauttaa seuraavan merkin tiedostosta, johon osoitin osoittaa. Kun tiedoston loppu on saavutettu, EOF lähetetään takaisin.
  • fgets (puskuri, n, file_pointer): Se lukee n-1 merkkiä tiedostosta ja tallentaa merkkijonon puskuriin, johon NULL-merkki '\ 0' lisätään viimeisenä merkkinä.
  • fscanf (file_pointer, conversion_specifiers, variable_ addresses) : Sitä käytetään tietojen jäsentämiseen ja analysointiin. Se lukee merkkejä tiedostosta ja osoittaa syötteen muuttujien osoittimien luetteloon muuttujien osoitteet muunnosmäärittimien avulla. Muista, että kuten scanf: n kohdalla, myös fscanf lopettaa merkkijonon lukemisen, kun välilyönti tai uusi viiva esiintyy.

Seuraava ohjelma osoittaa lukemisen fputs_test.txt-tiedostosta käyttämällä toimintoja fgets (), fscanf () ja 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;}

Tulos:

----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. Yllä olevassa ohjelmassa olemme avanneet tiedoston nimeltä "fprintf_test.txt", joka on aiemmin kirjoitettu fprintf () -funktiolla, ja se sisältää merkkijonon "Learning C with Guru99". Luemme sen käyttämällä fgets () -toimintoa, joka lukee rivi riviltä, ​​jossa puskurikoon on oltava riittävä käsittelemään koko riviä.
  2. Avaamme tiedoston uudelleen, jotta osoitintiedosto palautetaan osoittamaan tiedoston alkuun. Luo useita merkkijonomuuttujia käsittelemään kutakin sanaa erikseen. Tulosta muuttujat nähdäksesi niiden sisällön. Fscanf () - tiedostoa käytetään pääasiassa tietojen purkamiseen ja jäsentämiseen tiedostosta.
  3. Avaa tiedosto uudelleen palauttaaksesi osoitintiedoston osoittamaan tiedoston alkuun. Lue tiedot ja tulosta ne tiedostomerkkeittäin merkin avulla käyttäen getc () -toimintoa, kunnes EOF-käsky esiintyy
  4. Suoritettuamme lukutoimintotiedoston eri muunnelmilla, suljet tiedoston uudelleen fclose-toiminnolla.

Interaktiivinen tiedosto Lue ja kirjoita getc: llä ja putc: llä

Nämä ovat yksinkertaisia ​​tiedostotoimintoja. Getc tarkoittaa get-merkkiä ja putc tarkoittaa put-luonnetta. Näitä kahta toimintoa käytetään vain yhden merkin käsittelemiseen kerrallaan.

Seuraava ohjelma osoittaa tiedostojen käsittelytoiminnot C-ohjelmoinnissa:

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

Tuotos:

  1. Edellä olevassa ohjelmassa olemme luoneet ja avanneet tiedoston nimeltä demo kirjoitustilassa.
  2. Kun kirjoitusoperaatio on suoritettu, tiedosto suljetaan fclose-toiminnolla.
  3. Olemme jälleen avanneet tiedoston, joka sisältää nyt tietoja lukutilassa. Jonkin aikaa silmukka suoritetaan, kunnes eof on löydetty. Kun tiedoston loppu on löydetty, toiminto lopetetaan ja tiedot näytetään käyttämällä printf-toimintoa.
  4. Lukemisen suorittamisen jälkeen tiedosto suljetaan uudelleen fclose-toiminnolla.

Yhteenveto

  • Tiedosto on muistissa oleva tila, johon tiedot tallennetaan.
  • C-ohjelmointi tarjoaa useita toimintoja tiedoston käsittelemiseksi.
  • Tiedostojen hallintaa kutsutaan tiedostojen käsittelyn mekanismiksi.
  • Tiedosto on avattava ennen sen suorittamista.
  • Tiedosto voidaan avata luku-, kirjoitus- tai liite-tilassa.
  • Getc- ja putc-toimintoja käytetään yhden merkin lukemiseen ja kirjoittamiseen.
  • Funktio fscanf () sallii tietojen lukemisen ja jäsentämisen tiedostosta
  • Voimme lukea (käyttämällä getc- toimintoa) koko tiedoston silmukoiden avulla kattamaan kaikki tiedostot, kunnes EOF on kohdattu
  • Voimme kirjoittaa tiedostoon nimen luomisen jälkeen käyttämällä funktiota fprintf () ja siinä täytyy olla uusi rivi merkkijonon lopussa.