logo

C Program for å lese innholdet i hele filen

C programmeringsspråk støtter fire forhåndsdefinerte funksjoner for å lese innhold fra en fil, definert i stdio.h header-fil:

  1. fgetc() Denne funksjonen brukes til å lese et enkelt tegn fra filen.
  2. fgets() Denne funksjonen brukes til å lese strenger fra filer.
  3. fscanf() Denne funksjonen brukes til å lese formatert inndata fra en fil.
  4. fread() Denne funksjonen brukes til å lese blokken med råbyte fra filer. Dette brukes til å lese binære filer.

Trinn for å lese en fil:



  • Åpne en fil med funksjonen fopen() og lagre referansen til filen i en FIL-peker.
  • Les innholdet i filen ved å bruke en av disse funksjonene fgetc(), fgets(), fscanf() eller fread().
  • Fil lukk filen med funksjonen fclose().

La oss begynne å diskutere hver av disse funksjonene i detalj.

hvor er innsettingsnøkkelen på laptoptastaturet

fgetc()

fgetc() leser tegn pekt av funksjonspekeren på det tidspunktet. Ved hver vellykket lesing returnerer den tegnet (ASCII-verdi) lest fra strømmen og flytter leseposisjonen til neste tegn. Denne funksjonen returnerer en konstant EOF (-1) når det ikke er noe innhold å lese eller en mislykket lesing.



Syntaks:

int fgetc(FIL *ptr);

Nærme seg:



  • Dette programmet leser hele innholdet i filen ved å bruke denne funksjonen ved å lese tegn én etter én.
  • Do-While-løkke vil bli brukt som vil lese karakter til den når slutten av filen.
  • Når den når slutten, returnerer den EOF-tegn (-1).

Bruker EOF:
Nedenfor er C-programmet for å implementere tilnærmingen ovenfor-

C




// C program to implement> // the above approach> #include> #include> #include> // Driver code> int> main()> {> >FILE>* ptr;> >char> ch;> >// Opening file in reading mode> >ptr =>fopen>(>'test.txt'>,>'r'>);> >if> (NULL == ptr) {> >printf>(>'file can't be opened '>);> >}> >printf>(>'content of this file are '>);> >// Printing what is written in file> >// character by character using loop.> >do> {> >ch =>fgetc>(ptr);> >printf>(>'%c'>, ch);> >// Checking if character is not EOF.> >// If it is EOF stop reading.> >}>while> (ch != EOF);> >// Closing the file> >fclose>(ptr);> >return> 0;> }>

>

>

Inndatafil:

techcodeview.com | A computer science portal for geeks>

Produksjon:

I koden ovenfor er tilnærmingen å lese ett tegn fra filen og sjekke om det ikke er EOF, hvis det ikke er det, så skriv det ut og om det er så stopp å lese.

Bruker feof():
feof()-funksjonen tar filpekeren som argument og returnerer true hvis pekeren når slutten av filen.

Syntaks:

int feof(FIL *ptr);

Nærme seg:

  • I denne tilnærmingen leses et tegn ved å bruke fgetc().
  • Bruk funksjonen feof() for å se etter slutten av filen. siden feof() returnerer sant etter at den når slutten.
  • Bruk logisk NOT-operator(!) slik at når den når slutttilstanden blir falsk og sløyfestopp.

Nedenfor er C-programmet for å implementere tilnærmingen ovenfor:

C




// C program to implement> // the above approach> #include> #include> #include> // Driver code> int> main()> {> >FILE>* ptr;> >char> ch;> >ptr =>fopen>(>'test.txt'>,>'r'>);> >if> (NULL == ptr) {> >printf>(>'file can't be opened '>);> >}> >printf>(>'content of this file are '>);> >while> (!>feof>(ptr)) {> >ch =>fgetc>(ptr);> >printf>(>'%c'>, ch);> >}> >fclose>(ptr);> >return> 0;> }>

>

>

Inndatafil:

techcodeview.com | A computer science portal for geeks>

Produksjon:

fgets()

fgets() leser én streng om gangen fra filen. fgets() returnerer en streng hvis den er vellykket lest av funksjon eller returnerer NULL hvis den ikke kan leses.

Syntaks:

char * fgets(char *str, int størrelse, FIL * ptr);

Her,
str: Det er streng som fgets() lagrer streng etter å ha lest den fra fil.
størrelse: Det er maksimalt antall tegn å lese fra stream.
ptr: Det er filpeker.

Nærme seg:

  • I denne tilnærmingen leses innholdet i filen ett tegn om gangen til vi når slutten av filen.
  • Når vi kommer til slutten av filen kan fgets() ikke lese og returnerer NULL og programmet vil slutte å lese.

Nedenfor er C-programmet for å implementere tilnærmingen ovenfor:

C


lenge til int java



// C program to implement> // the above approach> #include> #include> #include> // Driver code> int> main()> {> >FILE>* ptr;> >char> str[50];> >ptr =>fopen>(>'test.txt'>,>'a+'>);> >if> (NULL == ptr) {> >printf>(>'file can't be opened '>);> >}> >printf>(>'content of this file are '>);> >while> (>fgets>(str, 50, ptr) != NULL) {> >printf>(>'%s'>, str);> >}> >fclose>(ptr);> >return> 0;> }>

>

>

Inndatafil:

techcodeview.com | A computer science portal for geeks>

Produksjon:

fscanf()

fscanf() leser formatert input fra en strøm.

Syntaks:

int fscanf(FIL *ptr, const char *format, …)

Nærme seg:

  • fscanf leser formaterte data fra filene og lagrer dem i variabler.
  • Dataene i bufferen skrives ut på konsollen til slutten av filen er nådd.

C++




// C program to implement> // the above approach> #include> // Driver code> int> main()> {> >FILE>* ptr =>fopen>(>'abc.txt'>,>'r'>);> >if> (ptr == NULL) {> >printf>(>'no such file.'>);> >return> 0;> >}> >/* Assuming that test.txt has content> >in below format> >NAME AGE CITY> >abc 12 hyderbad> >bef 25 delhi> >cce 65 bangalore */> >char> buf[100];> >while> (>fscanf>(ptr,>'%*s %*s %s '>,> >buf)> >== 1)> >printf>(>'%s '>, buf);> >return> 0;> }>

>

>

Produksjon:

fread()

fread() gjør det lettere å lese blokker med data fra en fil. For eksempel, i tilfelle av å lese en struktur fra filen, blir det en enkel jobb å lese ved å bruke fread.

Syntaks:

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

ptr: Dette er pekeren til en minneblokk med en minimumsstørrelse på størrelse*nmemb byte.
størrelse: Dette er størrelsen i byte for hvert element som skal leses.
nmemb: Dette er antall elementer, hver med en størrelse på størrelse byte.
strøm: Dette er pekeren til et FILE-objekt som spesifiserer en inngangsstrøm.

Nærme seg:

  • Den leser først antall objekter, hver med en størrelse på størrelse byte fra den gitte inngangsstrømmen.
  • Den totale mengden byte som leses hvis vellykket er (størrelse*antall).
  • I følge nr. av leste tegn, økes indikatorfilposisjonen.
  • Hvis de leste objektene ikke er trivielt kopierbare, er oppførselen udefinert, og hvis verdien av størrelse eller antall er lik null, vil dette programmet ganske enkelt returnere 0.

C++




// C program to implement> // the above approach> #include> #include> #include> // Structure to store> // course details> struct> Course {> >char> cname[30];> >char> sdate[30];> };> // Driver code> int> main()> {> >FILE>* of;> >of =>fopen>(>'test.txt'>,>'w'>);> >if> (of == NULL) {> >fprintf>(stderr,> >' Error to open the file '>);> >exit>(1);> >}> >struct> Course inp1 = {>'Algorithms'>,> >'30OCT'> };> >struct> Course inp2 = {>'DataStructures'>,> >'28SEPT'> };> >struct> Course inp3 = {>'Programming'>,> >'1NOV'> };> >fwrite>(&inp1,>sizeof>(>struct> Course),> >1, of);> >fwrite>(&inp2,>sizeof>(>struct> Course),> >1, of);> >fwrite>(&inp3,>sizeof>(>struct> Course),> >1, of);> >if> (>fwrite> != 0)> >printf>(>'Contents to file written successfully ! '>);> >else> >printf>(>'Error writing file ! '>);> >fclose>(of);> >// File pointer to read from file> >FILE>* inf;> >struct> Course inp;> >inf =>fopen>(>'test.txt'>,>'r'>);> >if> (inf == NULL) {> >fprintf>(stderr,> >' Error to open the file '>);> >exit>(1);> >}> >while> (>fread>(&inp,>sizeof>(>struct> Course),> >1, inf))> >printf>(>'Course Name = %s Started = %s '>,> >inp.cname, inp.sdate);> >fclose>(inf);> }>

>

>

Produksjon: