Descrie modul în care programatorul C creează, deschide și închide un fișier text sau un fișier binar.
Un fișier înseamnă o serie de octeți, fie că este un fișier text sau un fișier binar, C Language, nu numai că oferă acces la funcțiile de nivel superior, dar oferă și apelul de bază (OS) pentru a procesa fișierele de pe dispozitivul de stocare . Acest capitol va explica apelurile importante în managementul documentelor.
fişier deschis
Folosind de obicei funcția fopen () pentru a crea un fișier nou sau a deschide un fișier existent, acest apel inițializează un obiect de tip FILE care conține toate informațiile necesare pentru a controla fluxul. Iată prototipul acestui apel de funcție:
FILE *fopen ( const char * nume de fișier , const char * mode );
Aici filename este un șir pentru a denumi un fișier, valoarea modului de acces poate fi una dintre următoarele valori:
model | descriere |
r | Deschideți un fișier text existent care permite citirea acestuia. |
w | Deschideți un fișier text care permite scrierea în fișier. Dacă fișierul nu există, este creat un fișier nou. Aici, programul tău scrie conținutul de la începutul fișierului. Dacă fișierul există, acesta va fi trunchiat la lungimea zero și rescris. |
a | Deschideți un fișier text și scrieți în fișier într-un mod de adăugare. Dacă fișierul nu există, este creat un fișier nou. Aici, programul dvs. atașează conținut la fișierele pe care le aveți deja. |
r+ | Deschideți un fișier text care vă permite să citiți și să scrieți fișierul. |
w+ | Deschideți un fișier text care vă permite să citiți și să scrieți fișierul. Dacă fișierul există deja, fișierul este trunchiat la lungimea zero, iar dacă fișierul nu există, este creat un fișier nou. |
a+ | Deschideți un fișier text care vă permite să citiți și să scrieți fișierul. Dacă fișierul nu există, este creat un fișier nou. Citirea începe la începutul fișierului, iar scrierea este doar în modul de adăugare. |
Dacă este procesat un fișier binar, utilizați următorul mod de acces pentru a înlocui cel de mai sus:
„rb”, „wb”, „ab”, „rb+”, „r+b”, „wb+”, „w+b”, „ab+”, „a+b”
dosar inchis
Pentru a închide fișierul, vă rugăm să utilizați funcția fclose(). Prototipul funcției este următorul:
int fclose ( FIȘIER *fp );
- Dacă fișierul este închis cu succes, funcția fclose() returnează zero, iar dacă eroarea returnează EOF. Această funcție, de fapt, elimină datele din buffer, închide fișierul și eliberează toată memoria folosită pentru acel fișier. EOF este o constantă definită în fișierul antet stdio.h
Biblioteca standard C oferă diverse funcții pentru a citi și scrie fișiere după caractere sau ca șir cu lungime fixă.
Scrieți în fișier
Iată cele mai simple funcții pentru a scrie caractere în flux:
int fputc ( int c , FIȘIER *fp );
Funcția fputc () scrie valoarea caracterului parametrului c în fluxul de ieșire către care indică fp. Dacă scrierile au succes, returnează caracterul scris și EOF dacă apare o eroare. Puteți folosi următoarea funcție pentru a scrie un șir care se termină cu un nul în flux:
int fputs ( const char *s , FILE *fp );
Funcția fputs () scrie șirul s în fluxul de ieșire unde indică fp. Dacă scrierile reușesc, returnează o valoare nenegativă și EOF dacă apare o eroare. De asemenea, puteți utiliza funcția int fprintf (FILE * fp, const char * format,...) scrie un șir în fișier. Încercați următorul exemplu:
Notă: Asigurați-vă că aveți un director tmp disponibil și, dacă nu există, trebuie să îl creați mai întâi pe computer.
/ tmp este de obicei un director temporar pe sistemul Linux. Dacă rulați pe sistemul Windows, trebuie să îl modificați într-un director existent în mediul local, cum ar fi: C:\tmp, D:\tmp etc.
exemplu viu
#include
Când codul de mai sus este compilat și executat, acesta creează un nou fișier test.txt în directorul / tmp. Și scrie pe două linii folosind două funcții diferite. Să citim în continuare acest fișier.
Citiți fișierul
Următoarea este cea mai simplă funcție pentru a citi un singur caracter dintr-un fișier:
int fgetc ( FIȘIER * fp );
Funcția fgetc () citește un caracter din fișierul de intrare către care indică fp. Valoarea returnată este caracterul citit și EOF dacă apare o eroare. Următoarea funcție vă permite să citiți un șir dintr-un flux:
char *fgets ( char *buf , int n , FILE *fp );
Funcția fgets () citește n-1 caractere din fluxul de intrare direcționat de fp. Copiază șirul citit în bufferul tampon și adaugă un caracter nul la sfârșit pentru a termina șirul.
Dacă această funcție întâlnește un caracter de linie întreruptă „\ n” sau EOF de la sfârșitul fișierului înainte de a citi ultimul caracter, atunci revine doar la caracterele citite, inclusiv rupturile de linie. De asemenea, puteți utiliza funcția int fscanf (FILE * fp, const char * format,...) pentru a citi șirul din fișier, dar se oprește citirea atunci când întâlniți primul spațiu și primul ruptură de linie.
exemplu viu
#include
Când codul de mai sus este compilat și executat, acesta citește fișierele create în secțiunea anterioară, producând următoarele rezultate:
1: Acesta 2: se testează pentru fprintf...
3: Acesta este un test pentru fputs...
În primul rând, metoda fscanf() citește doar This .deoarece întâlnește un spațiu în spate. În al doilea rând, apelați funcția fgets () pentru a citi partea rămasă până la sfârșitul liniei. În cele din urmă, apelați fgets () pentru a citi complet al doilea rând.
Funcția I/O binară
Următoarele două funcții sunt utilizate pentru intrarea și ieșirea binară:
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 );
Ambele funcții sunt de citire și scriere pentru blocurile de stocare - de obicei matrice sau structuri.
Mai sus, despre citirea și scrierea fișierelor C aparține HDV Phoelectron Technology Ltd., o operațiune tehnică software. Și compania pentru echipamente legate de rețea (cum ar fi: ACONU/ comunicareONU/ inteligentONU/ fibrăONU, etc.) a reunit o echipă de software puternică, pentru ca fiecare client să personalizeze cerințele exclusive care au nevoie de el, lasând, de asemenea, produsele noastre mai inteligente și mai avansate.