Beskriver hvordan C-programmereren oppretter, åpner og lukker en tekstfil eller en binær fil.
En fil, betyr en serie byte, enten det er en tekstfil eller en binær fil, C Language, gir ikke bare tilgang til funksjonene på øverste nivå, men gir også det underliggende (OS) kallet til å behandle filer på lagringsenheten . Dette kapittelet vil forklare viktige samtaler innen dokumenthåndtering.
åpen fil
Vanligvis ved å bruke fopen ()-funksjonen for å lage en ny fil eller åpne en eksisterende fil, initialiserer dette kallet et objekt av typen FILE som inneholder all nødvendig informasjon for å kontrollere flyten. Her er prototypen til dette funksjonskallet:
FIL *fopen ( const char * filnavn , const char * mode );
Her er filnavn en streng for å navngi en fil, verdien av tilgangsmodusen kan være en av følgende verdier:
mønster | beskrivelse |
r | Åpne en eksisterende tekstfil som lar den leses. |
w | Åpne en tekstfil som lar deg skrive til filen. Hvis filen ikke eksisterer, opprettes en ny fil. Her skriver programmet innholdet fra begynnelsen av filen. Hvis filen eksisterer, vil den bli avkortet til null lengde og skrevet på nytt. |
a | Åpne en tekstfil og skriv til filen i en tilleggsmodus. Hvis filen ikke eksisterer, opprettes en ny fil. Her legger programmet ditt til innhold til filene du allerede har. |
r+ | Åpne en tekstfil som lar deg lese og skrive filen. |
w+ | Åpne en tekstfil som lar deg lese og skrive filen. Hvis filen allerede eksisterer, avkortes filen til null lengde, og hvis filen ikke eksisterer, opprettes en ny fil. |
a+ | Åpne en tekstfil som lar deg lese og skrive filen. Hvis filen ikke eksisterer, opprettes en ny fil. Lesingen starter i begynnelsen av filen, og skrivingen er kun i tilleggsmodus. |
Hvis behandlet binær fil, bruk følgende tilgangsmodus for å erstatte ovennevnte:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
lukket fil
For å lukke filen, bruk fclose()-funksjonen. Prototypen av funksjonen er som følger:
int fclose (FIL *fp);
- Hvis filen lukkes, returnerer fclose()-funksjonen null, og hvis feilen returnerer EOF. Denne funksjonen fjerner faktisk dataene fra bufferen, lukker filen og frigjør alt minnet som brukes for den filen. EOF er en konstant definert i header-filen stdio.h
C-standardbiblioteket gir forskjellige funksjoner for å lese og skrive filer etter tegn eller som en streng med fast lengde.
Skriv til filen
Her er de enkleste funksjonene for å skrive tegn til strømmen:
int fputc (int c, FIL *fp);
Funksjonen fputc () skriver tegnverdien til parameteren c inn i utdatastrømmen som fp peker på. Hvis skrivingen er vellykket, returnerer den det skrevne tegnet og EOF hvis det oppstår en feil. Du kan bruke følgende funksjon for å skrive en streng som slutter med en null til strømmen:
int fputs (const char *s, FILE *fp);
Funksjonen fputs () skriver strengen s til utdatastrømmen der fp peker på. Hvis skrivingen lykkes, returnerer den en ikke-negativ verdi og EOF hvis det oppstår en feil. Du kan også bruke funksjonen til int fprintf (FILE * fp, const char * format,...) skriver en streng til filen. Prøv følgende eksempel:
Merk: Sørg for at du har en tilgjengelig tmp-katalog, og hvis den ikke eksisterer, må du først opprette den på datamaskinen.
/ tmp er vanligvis en midlertidig katalog på Linux-systemet. Hvis du kjører på Windows-systemet, må du endre det til en eksisterende katalog i det lokale miljøet, for eksempel: C: \ tmp, D: \ tmp, etc.
levende eksempel
#inkludere
Når koden ovenfor er kompilert og utført, oppretter den en ny fil test.txt i / tmp-katalogen. Og skriver til to linjer ved hjelp av to forskjellige funksjoner. La oss lese denne filen neste gang.
Les filen
Følgende er den enkleste funksjonen for å lese et enkelt tegn fra en fil:
int fgetc ( FIL * fp );
Funksjonen fgetc () leser et tegn fra inndatafilen som fp peker til. Returverdien er lesetegnet og EOF hvis det oppstår en feil. Følgende funksjon lar deg lese en streng fra en strøm:
char *fgets ( char *buf , int n , FIL *fp );
Funksjonen fgets () leser n-1 tegn fra inndatastrømmen dirigert av fp. Den kopierer lesestrengen til bufferbufferen og legger til et nulltegn på slutten for å avslutte strengen.
Hvis denne funksjonen støter på et brutt linjetegn '\ n' eller EOF på slutten av filen før du leser det siste tegnet, returneres bare til de leste tegnene, inkludert linjeskift. Du kan også bruke funksjonen int fscanf (FILE * fp, const char * format,...) for å lese strengen fra filen, men den slutter å lese når den møter det første mellomrom og linjeskift.
levende eksempel
#inkludere
Når koden ovenfor er kompilert og utført, leser den filene opprettet i forrige seksjon, og gir følgende resultater:
1: Denne 2: tester for fprintf...
3: Dette er testing for fputs...
For det første leser metoden til fscanf() bare This .fordi den møter et mellomrom bak. For det andre, ring functon fgets () for å lese den gjenværende delen til slutten av linjen. Til slutt ring fgets () for å lese den andre raden fullstendig.
Binær I/O-funksjon
Følgende to funksjoner brukes for binær inngang og utgang:
size_t fread (void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file ); size_t fwrite (const void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );
Begge funksjonene leses og skrives for lagringsblokker - vanligvis matriser eller strukturer.
Ovenfor ca C fillesing og skriving tilhører HDV Phoelectron Technology Ltd., en programvareteknisk operasjon. Og selskapet for nettverksrelatert utstyr (som: ACONU/ kommunikasjonONU/ intelligentONU/ fiberONU, etc.) har samlet et kraftig programvareteam, for hver kunde tilpasse de eksklusive kravene som trenger det, også la produktene våre mer intelligente og avanserte.