Opisuje kako C programator kreira, otvara i zatvara tekstualnu ili binarnu datoteku.
Datoteka, znači niz bajtova, bilo da se radi o tekstualnoj ili binarnoj datoteci, jezik C, ne samo da pruža pristup funkcijama najvišeg nivoa, već također pruža osnovni (OS) poziv za obradu datoteka na uređaju za pohranu . Ovo poglavlje će objasniti važne pozive u upravljanju dokumentima.
open-file
Obično koristeći funkciju fopen () za kreiranje nove datoteke ili otvaranje postojeće datoteke, ovaj poziv inicijalizira objekt tipa FILE koji sadrži sve potrebne informacije za kontrolu toka. Evo prototipa poziva ove funkcije:
FILE *fopen ( const char * naziv datoteke, const char * način rada);
Ovdje filename je niz za imenovanje datoteke, vrijednost načina pristupa može biti jedna od sljedećih vrijednosti:
uzorak | opis |
r | Otvorite postojeću tekstualnu datoteku koja omogućava njeno čitanje. |
w | Otvorite tekstualnu datoteku koja omogućava pisanje u datoteku. Ako datoteka ne postoji, kreira se nova datoteka. Ovdje vaš program upisuje sadržaj s početka datoteke. Ako datoteka postoji, biće skraćena na nultu dužinu i ponovo napisana. |
a | Otvorite tekstualnu datoteku i pišite u datoteku u načinu dodavanja. Ako datoteka ne postoji, kreira se nova datoteka. Ovdje vaš program dodaje sadržaj datotekama koje već imate. |
r+ | Otvorite tekstualnu datoteku koja vam omogućava čitanje i pisanje datoteke. |
w+ | Otvorite tekstualnu datoteku koja vam omogućava čitanje i pisanje datoteke. Ako datoteka već postoji, datoteka se skraćuje na nultu dužinu, a ako datoteka ne postoji, kreira se nova datoteka. |
a+ | Otvorite tekstualnu datoteku koja vam omogućava čitanje i pisanje datoteke. Ako datoteka ne postoji, kreira se nova datoteka. Čitanje počinje na početku datoteke, a upisivanje je samo u načinu dodavanja. |
Ako je obrađena binarna datoteka, koristite sljedeći način pristupa da zamijenite gore navedeno:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
zatvoreni fajl
Da biste zatvorili datoteku, koristite funkciju fclose(). Prototip funkcije je sljedeći:
int fclose (DATOTEKA *fp);
- Ako je datoteka uspješno zatvorena, funkcija fclose() vraća nulu, a ako greška vraća EOF. Ova funkcija, zapravo, uklanja podatke iz bafera, zatvara datoteku i oslobađa svu memoriju koja se koristi za tu datoteku. EOF je konstanta definirana u datoteci zaglavlja stdio.h
C standardna biblioteka pruža različite funkcije za čitanje i pisanje datoteka po znakovima ili kao niz fiksne dužine.
Pišite u fajl
Evo najjednostavnijih funkcija za pisanje znakova u stream:
int fputc (int c, FILE *fp);
Funkcija fputc () upisuje vrijednost znakova parametra c u izlazni tok na koji fp pokazuje. Ako su upisi uspješni, vraća napisani znak i EOF ako dođe do greške. Možete koristiti sljedeću funkciju za pisanje niza koji se završava nulom u stream:
int fputs ( const char *s , FILE *fp );
Funkcija fputs () upisuje string s u izlazni tok gdje fp pokazuje. Ako upisi uspije, vraća nenegativnu vrijednost i EOF ako dođe do greške. Također možete koristiti funkciju int fprintf (FILE * fp, const char * format,...) zapisuje string u datoteku. Pokušajte sljedeći primjer:
Napomena: Provjerite imate li dostupan tmp direktorij, a ako ne postoji, prvo ga morate kreirati na svom računaru.
/tmp je obično privremeni direktorij na Linux sistemu. Ako radite na Windows sistemu, morate ga izmijeniti u postojeći direktorij u lokalnom okruženju, kao što su: C: \ tmp, D: \ tmp, itd.
živi primjer
#include
Kada se gornji kod kompajlira i izvrši, kreira novu datoteku test.txt u direktoriju /tmp. I piše u dva reda koristeći dvije različite funkcije. Pročitajmo ovaj fajl sljedeći.
Pročitajte fajl
Sljedeća je najjednostavnija funkcija za čitanje jednog znaka iz datoteke:
int fgetc (DATOTEKA * fp);
Funkcija fgetc () čita znak iz ulazne datoteke na koju pokazuje fp. Povratna vrijednost je učitani znak i EOF ako dođe do greške. Sljedeća funkcija vam omogućava da pročitate niz iz toka:
char *fgets (char *buf, int n, FILE *fp);
Funkcija fgets () čita n-1 karaktera iz ulaznog toka kojim upravlja fp. Kopira string za čitanje u bafer buf i dodaje nul karakter na kraju da bi prekinuo string.
Ako ova funkcija naiđe na znak izlomljene linije '\ n' ili EOF na kraju datoteke prije čitanja posljednjeg znaka, onda se vraća samo na znakove za čitanje, uključujući prijelome reda. Možete koristiti i funkciju int fscanf (FILE * fp, const char * format,...) da pročitate niz iz datoteke, ali ona prestaje čitati kada naiđe na prvi razmak i prijelom reda.
živi primjer
#include
Kada se gornji kod kompajlira i izvrši, on čita datoteke kreirane u prethodnom odjeljku, dajući sljedeće rezultate:
1: Ovo 2: se testira za fprintf...
3: Ovo je testiranje za fputove...
Prvo, metoda fscanf() samo čita This .zato što nailazi na razmak pozadi. Drugo, pozovite functon fgets () da pročitate preostali dio do kraja reda. Konačno, pozovite fgets () da u potpunosti pročitate drugi red.
Binarna I/O funkcija
Sljedeće dvije funkcije se koriste za binarni ulaz i izlaz:
size_t fread (void *ptr, size_t size_of_elements, size_t broj_elemenata, FILE *a_file); size_t fwrite (const void *ptr, size_t size_of_elements, size_t broj_elemenata, FILE *a_file);
Obje funkcije se čitaju i pišu za memorijske blokove - obično nizove ili strukture.
Gore o čitanju i pisanju C datoteke pripada HDV Phoelectron Technology Ltd., softverskoj tehničkoj operaciji. I kompanija za mrežnu opremu (kao što su: ACONU/ komunikacijaONU/ inteligentanONU/ vlaknaONU, itd.) okupio je moćan softverski tim, za svakog kupca prilagodio ekskluzivne zahtjeve kome je to potrebno, također neka naši proizvodi budu inteligentniji i napredniji.