Tässä oppaassa opitaan, miten tiedostoille voidaan syöttää / tulostaa (I / O) operaatioita C-ohjelmointikielellä.
C Tiedoston I / O – Sisällysluettelo
1. Tiedoston avaaminen
2. Tiedoston lukeminen
3. Tiedoston kirjoittaminen
4. Tiedoston sulkeminen
5. Merkkijonojen lukeminen ja kirjoittaminen tiedostoon
6. Binaaritiedostojen lukeminen ja kirjoittaminen C: ssä
Ennen kuin keskustelemme jokaisesta toiminnasta yksityiskohtaisesti, otetaan yksinkertainen C-ohjelma:
Yksinkertainen C-ohjelma tiedoston avaamiseen, lukemiseen ja sulkemiseen
Edellä olevassa ohjelmassa avataan tiedosto newfile.txt
tilassa r
, luemme tiedoston sisältöä ja näytämme se konsolilla. antaa ymmärtää jokaista operaatiota yksityiskohtaisesti:
Tiedoston avaaminen
fopen()
-funktiota käytetään tiedoston avaamiseen.
Syntaksi:
FILE pointer_name = fopen ("file_name", "Mode");
pointer_name
voi olla mikä tahansa valinta.
file_name
on tiedoston nimi, jonka haluat avata. Määritä tälle koko polku, kuten ”C: \\ myfiles \\ newfile.txt”.
Kun avaat tiedostoa, sinun on määritettävä tila. Tila, jota käytämme tiedoston lukemiseen, on ”r” ”Joka on” vain luku -tila ”.
esimerkiksi:
FILE *fp;fp = fopen("C:\\myfiles\\newfile.txt", "r");
Ensimmäisen merkin osoite tallennetaan kohtaan pointer fp
.
Kuinka tarkistaa, onko tiedosto avautunut onnistuneesti?
Jos tiedosto ei avaudu onnistuneesti, osoittimelle annetaan NULL-arvo, joten voit kirjoittaa logiikan näin :
Tämä koodi tarkistaa, onko tiedosto avattu onnistuneesti. Jos tiedosto ei avaudu, se näyttää virheilmoituksen käyttäjälle.
..FILE fpr;fpr = fopen("C:\\myfiles\\newfile.txt", "r");if (fpr == NULL){ puts("Error while opening file"); exit();}
Erilaiset tiedostojen avaustilat:
Tiedosto avataan käyttämällä fopen()
-toimintoa. Avaamisen aikana voit käyttää mitä tahansa seuraavista vaatimuksista vaatimusten mukaisesti.
Tila ”r”: Se on vain luku -tila, mikä tarkoittaa, että jos tiedosto avataan r-tilassa, se ei salli sinun kirjoittaa ja muokata sen sisältöä. Kun fopen()
avaa tiedoston onnistuneesti, se palauttaa tiedoston ensimmäisen merkin osoitteen, muuten NULL.
Tila ”w”: Se on kirjoitus vain tila. fopen()
-toiminto luo uuden tiedoston, kun määritettyä tiedostoa ei ole ja jos tiedostoa ei avata, se palauttaa NULL.
Tila ” a ”: Tämän tilan käyttäminen Sisältö voidaan liittää olemassa olevan tiedoston loppuun. Kuten tila ”w”, fopen()
luo uuden tiedoston, jos tiedostoa ei ole. Jos tiedosto epäonnistuu, se palauttaa NULL.
Tiedoston osoitin osoittaa: tiedoston viimeiseen merkkiin .
Tila ”r +”: Tämä tila on sama kuin tila ”r”; voit kuitenkin suorittaa erilaisia toimintoja tässä tilassa avatulle tiedostolle. Sinulla on oikeus lukea, kirjoittaa ja muokata tiedoston sisältöä avattu ”r +” -tilassa.
Tiedoston osoitin osoittaa: Tiedoston ensimmäisen merkin.
Tila ”w +”: Sama kuin tila ”w” lukuun ottamatta suoritettavia toimintoja; tiedostoa voidaan lukea, kirjoittaa ja muokata tässä tilassa.
Tila ”a +”: Sama kuin tila ”a”; voit lukea ja liittää tiedostossa olevat tiedot, mutta sisällön muokkaaminen ei ole sallittua tässä tilassa.
Tiedoston lukeminen
Jotta voisimme lukea tiedostoa, meidän on avattava se ensin käyttämällä mitä tahansa tilassa, esimerkiksi jos haluat lukea vain tiedoston, avaa se sitten ”r” -tilassa. Tiedoston avaamisen aikana valitun tilan perusteella voimme suorittaa tiedostolle tiettyjä toimintoja.
C Ohjelmoi tiedosto lukemaan
fgetc (): Tämä toiminto lukee merkin nykyisen osoittimen sijainnista ja onnistuneen lukemisen jälkeen siirtää osoitimen tiedoston seuraavaan merkkiin. Kun osoittimet saavuttavat tiedoston lopun , tämä funktio palauttaa EOF: n (tiedoston loppu). Olemme käyttäneet ohjelmassa EOF: ää tiedoston lopun määrittämiseen.
Kirjoittaminen tiedostoon
Kirjoittaaksesi tiedoston, on avattava tiedosto tilassa, joka tukee kirjoittamista. Jos esimerkiksi avaat tiedoston r-tilassa, et voi kirjoittaa tiedostoa vain r-tilassa, joka sallii vain lukemisen.
Esimerkki: C Ohjelma kirjoittaa tiedosto
Tämä ohjelma pyytää käyttäjää syöttämään merkin ja kirjoittaa kyseisen merkin tiedoston loppuun. Jos tiedostoa ei ole, tämä ohjelma luo tiedoston, jolla on määritetty nimi, ja kirjoittaa syötemerkin tiedostoon.
Tiedoston sulkeminen
fclose(fp);
Fclose () -toimintoa käytetään avatun tiedoston sulkemiseen. Argumenttina sinun on annettava osoitin tiedostolle, jonka haluat sulkea.
Esimerkki avata, lukea, kirjoittaa ja sulkea -toiminnosta C-muodossa
Lukeminen / kirjoittaminen (I / O) Merkkijonot tiedostoissa – fgets & syötteet
Tässä keskustellaan merkkijonojen lukemisesta ja kirjoittamisesta tiedostoon.
char *fgets(char *s, int rec_len, FILE *fpr)
s: Merkkijonot jonojen tallentamiseksi.
rec_len: Syötetietueen pituus.
fpr: Osoitin syötetiedostoon.
Otetaan esimerkki:
Esimerkki tiedostojen merkkijonojen lukemisesta C-ohjelmoinnissa
Yllä olevassa esimerkissä olemme käyttäneet fgets-funktiota näin:
fgets(str, 10, fpr)
Tässä str edustaa merkkijonoa (taulukko char), johon merkkijono tallennetaan, kun olet lukenut sen tiedostosta.
10 on merkkijonon pituus luetaan joka kerta.
fpr on osoitin tiedostoon, joka luetaan.
Miksi käytin if (fgets (str, 10, fpr) == NULL logiikkana lopun määrittämiseen tiedostosta?
Yllä olevissa esimerkeissä olemme käyttäneet ch == EOF-tiedostoa oppiaksesi tiedoston loppuun.Täällä olemme käyttäneet tätä logiikkaa, koska fgets palauttaa NULL-arvon, kun ei enää ole luettavissa olevia tietueita .
C-ohjelma – Merkkijonon kirjoittaminen tiedostoon
int fputs ( const char * s, FILE * fpw );
char *s
– Taulukko merkki.
FILE *fpw
– Osoitin (tiedostotyyppinen) tiedostoon, joka kirjoitetaan.
syötteissä on kaksi argumenttia –
fputs(str, fpw)
str – str edustaa taulukkoa, johon merkkijono on tallennettu.
fpw – FILE-osoitin ulostulotiedostoon, johon tietue on kirjoitettava.
Huomaa syötteistä:
syötteet oletusarvoisesti eivät lisää uutta riviä jokaisen tietueen kirjoittamisen jälkeen, jotta se voidaan tehdä manuaalisesti – sinulla voi olla seuraava käsky jokaisen tiedostoon kirjoittamisen jälkeen.
fputs("\n", fpw);
C-TIEDOSTO I / O binaaritiedostoille
Tähän mennessä olemme oppineet tiedostotoiminnot tekstitiedostoista, entä jos tiedostot ovat binaarisia (kuten .exe-tiedosto). Yllä olevat ohjelmat eivät toimi binaaritiedostoissa, mutta binaaritiedostojen käsittelyssä on pieni muutos. Tärkein ero on tiedostonimen & -tila. Annetaan ymmärtää tämä esimerkin avulla. Sanotaan, että minulla on kaksi binääritiedostoa bin1.exe & bin2.exe – Haluan kopioida bin1.exe-tiedoston bin2.exe-tiedostoon:
Esimerkki: Lukeminen ja binaaritiedostojen kirjoittaminen C
Huomautus: Tiedostojen avaustilat ovat ”rb” ja ”wb” ”r”: n sijaan & ”w” ..