logo

C Program til at læse indholdet af hele filen

C programmeringssprog understøtter fire foruddefinerede funktioner til at læse indhold fra en fil, defineret i stdio.h header-fil:

  1. fgetc() Denne funktion bruges til at læse et enkelt tegn fra filen.
  2. fgets() Denne funktion bruges til at læse strenge fra filer.
  3. fscanf() Denne funktion bruges til at læse formateret input fra en fil.
  4. fread() Denne funktion bruges til at læse blokken af ​​rå bytes fra filer. Dette bruges til at læse binære filer.

Trin til at læse en fil:



  • Åbn en fil ved hjælp af funktionen fopen() og gem referencen til filen i en FILE-markør.
  • Læs indholdet af filen ved hjælp af en af ​​disse funktioner fgetc(), fgets(), fscanf() eller fread().
  • Fil luk filen med funktionen fclose().

Lad os begynde at diskutere hver af disse funktioner i detaljer.

konvertere streng til json i java

fgetc()

fgetc() læser tegn, der peges af funktionsmarkøren på det tidspunkt. Ved hver vellykket læsning returnerer den tegnet (ASCII-værdi) læst fra strømmen og flytter læsepositionen til det næste tegn. Denne funktion returnerer en konstant EOF (-1), når der ikke er noget indhold at læse eller en mislykket læsning.



Syntaks:

int fgetc(FIL *ptr);

Nærme sig:



  • Dette program læser hele indholdet af filen ved at bruge denne funktion ved at læse tegn én efter én.
  • Do-While loop vil blive brugt, som vil læse karakter, indtil den når til slutningen af ​​filen.
  • Når den når slutningen, returnerer den EOF-tegn (-1).

Brug af EOF:
Nedenfor er C-programmet til at implementere ovenstående tilgang-

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

>

>

Input fil:

techcodeview.com | A computer science portal for geeks>

Produktion:

I ovenstående kode er fremgangsmåden at læse et tegn fra filen og kontrollere, om det ikke er EOF, hvis det ikke er det, så udskriv det, og hvis det er, så stop med at læse.

Brug af feof():
Feof()-funktionen tager filmarkøren som argument og returnerer sand, hvis markøren når slutningen af ​​filen.

Syntaks:

int feof(FIL *ptr);

Nærme sig:

  • I denne tilgang læses et tegn ved hjælp af fgetc().
  • Ved hjælp af feof()-funktionen tjek for slutningen af ​​filen. da feof() returnerer sand, når den når slutningen.
  • Brug logisk NOT-operator(!), så når den når sluttilstand bliver falsk og loop stop.

Nedenfor er C-programmet til at implementere ovenstående tilgang:

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

>

>

Input fil:

techcodeview.com | A computer science portal for geeks>

Produktion:

fgets()

fgets() læser en streng ad gangen fra filen. fgets() returnerer en streng, hvis den er læst af funktion eller returnerer NULL, hvis den ikke kan læses.

Syntaks:

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

Her,
str: Det er streng, hvori fgets() gemmer streng efter at have læst den fra fil.
størrelse: Det er maksimalt antal tegn at læse fra stream.
ptr: Det er fil pointer.

Nærme sig:

  • I denne tilgang læses indholdet af filen et tegn ad gangen, indtil vi når slutningen af ​​filen.
  • Når vi når slutningen af ​​filen kan fgets() ikke læse og returnerer NULL, og programmet stopper med at læse.

Nedenfor er C-programmet til at implementere ovenstående tilgang:

C


sletning fra et binært søgetræ



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

>

>

Input fil:

techcodeview.com | A computer science portal for geeks>

Produktion:

fscanf()

fscanf() læser formateret input fra en strøm.

Syntaks:

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

Nærme sig:

  • fscanf læser formaterede data fra filerne og gemmer dem i variabler.
  • Dataene i bufferen udskrives på konsollen, indtil slutningen af ​​filen nås.

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

>

>

Produktion:

fread()

fread() gør det nemmere at læse datablokke fra en fil. For eksempel, i tilfælde af at læse en struktur fra filen, bliver det en let opgave at læse ved hjælp af fread.

Syntaks:

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

ptr: Dette er pointeren til en hukommelsesblok med en minimumsstørrelse på størrelse*nmemb bytes.
størrelse: Dette er størrelsen i bytes af hvert element, der skal læses.
nmember: Dette er antallet af elementer, hver med en størrelse på størrelse bytes.
strøm: Dette er markøren til et FILE-objekt, der angiver en inputstrøm.

Nærme sig:

  • Den læser først antallet af objekter, hver med en størrelse på størrelse bytes fra den givne inputstrøm.
  • Det samlede antal bytes læses, hvis det lykkedes (størrelse*antal).
  • Ifølge nr. af læste tegn, øges indikatorfilens position.
  • Hvis de læste objekter ikke er trivielt kopierbare, er adfærden udefineret, og hvis værdien af ​​størrelse eller antal er lig med nul, vil dette program blot 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);> }>

>

>

Produktion: