C Filbehandling
En fil kan brukes til å lagre et stort volum vedvarende data. Som mange andre språk gir C følgende filhåndteringsfunksjoner,
- Oppretting av en fil
- Åpne en fil
- Lese en fil
- Skriver til en fil
- Lukke en fil
Følgende er de viktigste filhåndteringsfunksjonene som er tilgjengelige i 'C'.
funksjon | hensikt |
fopen () | Opprette en fil eller åpne en eksisterende fil |
fclose () | Lukke en fil |
fprintf () | Skrive en blokk med data til en fil |
fscanf () | Lese av blokkeringsdata fra en fil |
getc () | Leser et enkelt tegn fra en fil |
putc () | Skriver et enkelt tegn til en fil |
getw () | Leser et heltall fra en fil |
putw () | Skrive et heltall til en fil |
fseek () | Angir posisjonen til en filpeker til et spesifisert sted |
ftell () | Returnerer gjeldende posisjon for en filpeker |
spole tilbake () | Angir filpekeren i begynnelsen av en fil |
I denne veiledningen vil du lære-
- Hvordan lage en fil
- Hvordan lukke en fil:
- Skrive til en fil
- fputc () Funksjon:
- fputs () Funksjon:
- fprintf () Funksjon:
- Lese data fra en fil
- Interaktiv fil lese og skrive med getc og putc
Hvordan lage en fil
Når du vil jobbe med en fil, er det første trinnet å opprette en fil. En fil er bare plass i et minne der data lagres.
For å lage en fil i et 'C' -program brukes følgende syntaks,
FILE *fp;fp = fopen ("file_name", "mode");
I syntaksen ovenfor er filen en datastruktur som er definert i standardbiblioteket.
fopen er en standardfunksjon som brukes til å åpne en fil.
- Hvis filen ikke er tilstede på systemet, blir den opprettet og deretter åpnet.
- Hvis en fil allerede er tilstede på systemet, åpnes den direkte ved hjelp av denne funksjonen.
fp er en filpeker som peker på typefilen.
Når du åpner eller oppretter en fil, må du spesifisere hva du skal gjøre med filen. En fil i 'C' programmering kan opprettes eller åpnes for lese- / skriveformål. En modus brukes til å spesifisere om du vil åpne en fil for noen av nedenstående formål. Følgende er de forskjellige typene moduser i 'C' programmering som kan brukes mens du arbeider med en fil.
Filmodus | Beskrivelse |
r | Åpne en fil for lesing. Hvis en fil er i lesemodus, slettes ingen data hvis en fil allerede er tilstede på et system. |
w | Åpne en fil for skriving. Hvis en fil er i skrivemodus, opprettes en ny fil hvis en fil ikke eksisterer i det hele tatt. Hvis en fil allerede er tilstede på et system, blir alle dataene i filen avkortet, og den åpnes for skrivingsformål. |
en | Åpne en fil i tilleggsmodus. Hvis en fil er i tilleggsmodus, åpnes filen. Innholdet i filen endres ikke. |
r + | åpent for lesing og skriving fra begynnelsen |
w + | åpen for lesing og skriving, overskriving av en fil |
a + | åpen for lesing og skriving, vedlegg til filen |
I den gitte syntaksen er filnavnet og modusen spesifisert som strenger, derfor må de alltid være omsluttet av doble anførselstegn.
Eksempel:
#includeint main() {FILE *fp;fp = fopen ("data.txt", "w");}
Produksjon:
Fil opprettes i samme mappe der du har lagret koden.
Du kan spesifisere banen der du vil opprette filen
#includeint main() {FILE *fp;fp = fopen ("D://data.txt", "w");}
Hvordan lukke en fil
Man bør alltid lukke en fil når operasjonene på filen er over. Det betyr at innholdet og koblingene til filen avsluttes. Dette forhindrer utilsiktet skade på filen.
'C' gir fclose-funksjonen for å utføre fillukkingsoperasjon. Syntaksen til fclose er som følger,
fclose (file_pointer);
Eksempel:
FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);
Fclose-funksjonen tar en filpeker som et argument. Filen assosiert med filpekeren lukkes deretter ved hjelp av fclose-funksjonen. Den returnerer 0 hvis lukking var vellykket og EOF (slutten av filen) hvis det har oppstått en feil mens filen lukkes.
Etter å ha lukket filen, kan den samme filpekeren også brukes med andre filer.
I 'C' programmering lukkes filer automatisk når programmet avsluttes. Å lukke en fil manuelt ved å skrive fclose-funksjonen er en god programmeringspraksis.
Skrive til en fil
I C, når du skriver til en fil, må nye linjetegn '\ n' legges til eksplisitt.
Stdio-biblioteket tilbyr de nødvendige funksjonene for å skrive til en fil:
- fputc (char, file_pointer) : Den skriver et tegn til filen som file_pointer peker på.
- fputs (str, file_pointer) : Den skriver en streng til filen som fil_pointer peker på.
- fprintf (file_pointer, str, variable_lists) : Den skriver ut en streng til filen som file_pointer peker på. Strengen kan valgfritt inkludere formatspesifikatorer og en liste over variabler variable_lists.
Programmet nedenfor viser hvordan du skriver til en fil:
fputc () Funksjon:
#includeint 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;}
Produksjon:
Ovennevnte program skriver et enkelt tegn inn i fputc_test.txt- filen til den når neste linjesymbol "\ n" som indikerer at setningen ble skrevet. Prosessen er å ta hvert tegn i matrisen og skrive det inn i filen.
- I det ovennevnte programmet har vi opprettet og åpnet en fil som heter fputc_test.txt i skrivemodus og erklærer strengen som skal skrives inn i filen.
- Vi utfører en karakter for tegn-skrivoperasjon ved hjelp av for loop og legger hvert tegn i filen vår til "\ n" -tegnet oppstår, og filen lukkes ved hjelp av fclose-funksjonen.
fputs () Funksjon:
#includeint 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);}
PRODUKSJON:
- I programmet ovenfor har vi opprettet og åpnet en fil som heter fputs_test.txt i skrivemodus.
- Etter at vi har utført en skriveoperasjon ved hjelp av fputs () -funksjonen ved å skrive tre forskjellige strenger
- Deretter lukkes filen ved hjelp av fclose-funksjonen.
fprintf () Funksjon:
#includeint 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;}
PRODUKSJON:
- I programmet ovenfor har vi opprettet og åpnet en fil som heter fprintf_test.txt i skrivemodus.
- Etter at en skriveoperasjon er utført ved hjelp av fprintf () -funksjonen ved å skrive en streng, lukkes filen ved hjelp av fclose-funksjonen.
Lese data fra en fil
Det er tre forskjellige funksjoner dedikert til å lese data fra en fil
- fgetc (file_pointer): Den returnerer neste tegn fra filen som pekeren peker på. Når slutten av filen er nådd, sendes EOF tilbake.
- fgets (buffer, n, file_pointer): Den leser n-1 tegn fra filen og lagrer strengen i en buffer der NULL-tegnet '\ 0' er lagt til som siste tegn.
- fscanf (file_pointer, conversion_specifiers, variable_adresses) : Den brukes til å analysere og analysere data. Den leser tegn fra filen og tilordner inngangen til en liste over variabelpekere variable_adresser ved hjelp av konverteringsspesifikatorer. Husk at som med scanf, slutter fscanf å lese en streng når du opplever mellomrom eller ny linje.
Følgende program viser lesing fra fputs_test.txt-filen ved hjelp av henholdsvis fgets (), fscanf () og fgetc ():
#includeint 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;}
Resultat:
----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
- I programmet ovenfor har vi åpnet filen kalt "fprintf_test.txt" som tidligere ble skrevet med fprintf () -funksjonen, og den inneholder "Learning C med Guru99" -streng. Vi leser den ved hjelp av funksjonen fgets () som leser linje for linje der bufferstørrelsen må være nok til å håndtere hele linjen.
- Vi åpner filen på nytt for å tilbakestille pekefilen til den peker i begynnelsen av filen. Lag forskjellige strengvariabler for å håndtere hvert ord separat. Skriv ut variablene for å se innholdet. Fscanf () brukes hovedsakelig til å trekke ut og analysere data fra en fil.
- Åpne filen på nytt for å tilbakestille pekefilen til den peker i begynnelsen av filen. Les data og skriv dem ut fra filen tegn for tegn ved hjelp av getc () -funksjonen til EOF-setningen oppstår
- Etter å ha utført en leseoperasjonsfil med forskjellige varianter, lukket vi igjen filen ved hjelp av fclose-funksjonen.
Interaktiv fil lese og skrive med getc og putc
Dette er de enkleste filoperasjonene. Getc står for get character, og putc står for put character. Disse to funksjonene brukes til å håndtere bare ett tegn om gangen.
Følgende program viser filhåndteringsfunksjonene i 'C' programmering:
#includeint 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;}
Produksjon:
- I programmet ovenfor har vi opprettet og åpnet en fil som heter demo i skrivemodus.
- Etter at en skrivoperasjon er utført, lukkes filen ved hjelp av fclose-funksjonen.
- Vi har igjen åpnet en fil som nå inneholder data i en lesemodus. En stund-løkke vil kjøres til eof er funnet. Når slutten av filen er funnet, vil operasjonen bli avsluttet, og data vil vises ved hjelp av printf-funksjonen.
- Etter å ha utført en leseoperasjon, lukkes filen igjen ved hjelp av fclose-funksjonen.
Sammendrag
- En fil er et mellomrom i et minne der data lagres.
- 'C' programmering gir forskjellige funksjoner for å håndtere en fil.
- En mekanisme for manipulering med filene kalles filhåndtering.
- En fil må åpnes før du utfører operasjoner på den.
- En fil kan åpnes i lese-, skrive- eller vedleggsmodus.
- Getc- og putc-funksjoner brukes til å lese og skrive et enkelt tegn.
- Funksjonen fscanf () tillater å lese og analysere data fra en fil
- Vi kan lese (ved hjelp av getc- funksjonen) en hel fil ved å løkke den for å dekke hele filen til EOF oppstår
- Vi kan skrive til en fil etter å ha opprettet navnet sitt ved å bruke funksjonen fprintf (), og den må ha den nye linjetegnet på slutten av strengteksten.