Apraksta, kā C programmētājs izveido, atver un aizver teksta failu vai bināro failu.
Fails nozīmē baitu sēriju neatkarīgi no tā, vai tas ir teksta fails vai binārs fails, C valoda ne tikai nodrošina piekļuvi augstākā līmeņa funkcijām, bet arī nodrošina pamata (OS) izsaukumu, lai apstrādātu failus atmiņas ierīcē. . Šajā nodaļā tiks izskaidroti svarīgie dokumentu pārvaldības uzdevumi.
atvērts fails
Parasti izmantojot funkciju fopen (), lai izveidotu jaunu failu vai atvērtu esošu failu, šis izsaukums inicializē objekta tipa FILE, kas satur visu nepieciešamo informāciju, lai kontrolētu plūsmu. Šeit ir šīs funkcijas izsaukuma prototips:
FILE *fopen ( const char * faila nosaukums , const char * režīms );
Šeit faila nosaukums ir virkne, lai nosauktu failu, piekļuves režīma vērtība var būt viena no šīm vērtībām:
modelis | apraksts |
r | Atveriet esošu teksta failu, kas ļauj to lasīt. |
w | Atveriet teksta failu, kas ļauj rakstīt failā. Ja fails neeksistē, tiek izveidots jauns fails. Šeit jūsu programma raksta saturu no faila sākuma. Ja fails pastāv, tas tiks saīsināts līdz nullei un tiks pārrakstīts. |
a | Atveriet teksta failu un ierakstiet failā pievienošanas režīmā. Ja fails neeksistē, tiek izveidots jauns fails. Šeit jūsu programma pievieno saturu jau esošajiem failiem. |
r+ | Atveriet teksta failu, kas ļauj lasīt un rakstīt failu. |
w+ | Atveriet teksta failu, kas ļauj lasīt un rakstīt failu. Ja fails jau pastāv, fails tiek saīsināts līdz nullei, un, ja fails neeksistē, tiek izveidots jauns fails. |
a+ | Atveriet teksta failu, kas ļauj lasīt un rakstīt failu. Ja fails neeksistē, tiek izveidots jauns fails. Lasīšana sākas faila sākumā, un rakstīšana notiek tikai pievienošanas režīmā. |
Ja apstrādāts binārais fails, izmantojiet šādu piekļuves režīmu, lai aizstātu iepriekš minēto:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
slēgts fails
Lai aizvērtu failu, lūdzu, izmantojiet funkciju fclose(). Funkcijas prototips ir šāds:
int fclose (FILE *fp);
- Ja fails ir veiksmīgi aizvērts, funkcija fclose() atgriež nulli un, ja kļūda, atgriež EOF. Šī funkcija faktiski noņem datus no bufera, aizver failu un atbrīvo visu šim failam izmantoto atmiņu. EOF ir konstante, kas definēta galvenes failā stdio.h
C standarta bibliotēka nodrošina dažādas funkcijas, lai lasītu un rakstītu failus pēc rakstzīmēm vai kā fiksēta garuma virkni.
Ierakstiet failā
Tālāk ir norādītas vienkāršākās funkcijas rakstzīmju rakstīšanai straumē.
int fputc ( int c , FILE *fp );
Funkcija fputc () ieraksta parametra c rakstzīmju vērtību izvades straumē, uz kuru norāda fp. Ja rakstīšana ir veiksmīga, tas atgriež rakstīto rakstzīmi un EOF, ja rodas kļūda. Varat izmantot šo funkciju, lai straumē ierakstītu virkni, kas beidzas ar nulli:
int fputs ( const char *s , FILE *fp );
Funkcija fputs () ieraksta virkni s izvades straumē, uz kuru norāda fp. Ja rakstīšana ir veiksmīga, tā atgriež nenegatīvu vērtību un EOF, ja rodas kļūda. Varat arī izmantot funkciju int fprintf (FILE * fp, const char * formāts,...) ieraksta failā virkni. Izmēģiniet šādu piemēru:
Piezīme. Pārliecinieties, vai jums ir pieejams tmp direktorijs, un, ja tas neeksistē, vispirms tas ir jāizveido datorā.
/ tmp parasti ir pagaidu direktorijs Linux sistēmā. Ja izmantojat operētājsistēmu Windows, tas ir jāmaina uz esošu direktoriju vietējā vidē, piemēram: C: \ tmp, D: \ tmp utt.
dzīvs piemērs
#iekļauts
Kad iepriekš minētais kods ir apkopots un izpildīts, tiek izveidots jauns fails test.txt /tmp direktorijā. Un raksta divās rindās, izmantojot divas dažādas funkcijas. Tālāk lasīsim šo failu.
Izlasiet failu
Šī ir vienkāršākā funkcija vienas rakstzīmes nolasīšanai no faila:
int fgetc (FILE * fp);
Funkcija fgetc () nolasa rakstzīmi no ievades faila, uz kuru norāda fp. Atgriešanas vērtība ir nolasītā rakstzīme un EOF, ja rodas kļūda. Šī funkcija ļauj nolasīt virkni no straumes:
char *fgets ( char *buf , int n , FILE *fp );
Funkcija fgets () nolasa n-1 rakstzīmes no ievades straumes, ko vada fp. Tas kopē lasīšanas virkni bufera buferī un beigās pievieno nulles rakstzīmi, lai pārtrauktu virkni.
Ja šī funkcija pirms pēdējās rakstzīmes nolasīšanas sastopas ar lauztas līnijas rakstzīmi “\ n” vai faila beigu EOF, atgriežas tikai pie lasītajām rakstzīmēm, ieskaitot rindiņu pārtraukumus. Varat arī izmantot funkciju int fscanf (FILE * fp, const char * formāts,...), lai nolasītu virkni no faila, taču tā pārstāj lasīt, kad rodas pirmā atstarpe un rindas pārtraukums.
dzīvs piemērs
#iekļauts
Kad iepriekš minētais kods ir apkopots un izpildīts, tas nolasa iepriekšējā sadaļā izveidotos failus, radot šādus rezultātus:
1: Šis 2: testē fprintf...
3: šī ir fput testēšana...
Pirmkārt, fscanf() metode nolasa tikai šo .jo tā aizmugurē saskaras ar atstarpi. Otrkārt, izsauciet functon fgets (), lai nolasītu atlikušo daļu līdz rindas beigām. Visbeidzot, izsauciet fgets (), lai pilnībā izlasītu otro rindu.
Binārā I/O funkcija
Binārajai ievadei un izvadei tiek izmantotas šādas divas funkcijas:
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 );
Abas funkcijas tiek lasītas un rakstītas uzglabāšanas blokiem - parasti masīviem vai struktūrām.
Iepriekš par C failu lasīšanu un rakstīšanu pieder HDV Phoelectron Technology Ltd., programmatūras tehniskā darbība. Un ar tīklu saistītā aprīkojuma uzņēmums (piemēram, ACONU/ komunikācijaONU/ inteliģentsONU/ šķiedraONUu.c.) ir apvienojusi jaudīgu programmatūras komandu, lai katrs klients pielāgotu ekskluzīvās prasības, kam tas nepieciešams, kā arī padarītu mūsu produktus viedākus un modernākus.