Descrive cumu u programatore C crea, apre è chjude un schedariu di testu, o un schedariu binariu.
Un schedariu, significa una seria di byte, sia un schedariu di testu o un schedariu binariu, C Language, ùn solu furnisce l'accessu à e funzioni di u livellu superiore, ma furnisce ancu a chjama sottostante (OS) per processà i schedari nantu à u dispusitivu di almacenamento. . Stu capitulu spiegà i chjami impurtanti in a gestione di documenti.
open-file
Di solitu utilizendu a funzione fopen () per creà un novu schedariu o apre un schedariu esistenti, sta chjama inizializza un ughjettu di u tipu FILE chì cuntene tutte l'infurmazioni necessarii per cuntrullà u flussu. Eccu u prototipu di sta funzione chjamata:
FILE *fopen (const char * filename, const char * mode);
Eccu filename hè una stringa per nome un schedariu, u valore di u modu d'accessu pò esse unu di i seguenti valori:
mudellu | descrizzione |
r | Apertura un schedariu di testu esistenti chì permette di leghje. |
w | Apertura un schedariu di testu chì permette di scrive à u schedariu. Se u schedariu ùn esiste micca, un novu schedariu hè creatu. Quì, u vostru prugrammu scrive u cuntenutu da u principiu di u schedariu. Se u schedariu esiste, serà truncatu à a lunghezza zero è riscritta. |
a | Apertura un schedariu di testu è scrivite à u schedariu in un modu append. Se u schedariu ùn esiste micca, un novu schedariu hè creatu. Quì, u vostru prugrammu appends cuntenutu à i schedari chì avete digià. |
r+ | Apertura un schedariu di testu chì permette di leghje è scrive u schedariu. |
w+ | Apertura un schedariu di testu chì permette di leghje è scrive u schedariu. Se u schedariu esiste digià, u schedariu hè truncatu à a lunghezza zero, è se u schedariu ùn esiste micca, un novu schedariu hè creatu. |
a+ | Apertura un schedariu di testu chì permette di leghje è scrive u schedariu. Se u schedariu ùn esiste micca, un novu schedariu hè creatu. A lettura principia à u principiu di u schedariu, è a scrittura hè solu in modu append. |
Se processatu u schedariu binariu, utilizate u modu d'accessu seguente per rimpiazzà u sopra:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
schedariu chjusu
Per chjude u schedariu, utilizate a funzione fclose (). U prototipu di a funzione hè u seguente:
int fclose (FILE *fp);
- Se u schedariu hè chjusu bè, a funzione fclose () torna cero, è se l'errore torna EOF. Sta funzione, in fattu, sguassate i dati da u buffer, chjude u schedariu, è libera tutta a memoria utilizata per quellu schedariu. EOF hè una constante definita in u file header stdio.h
A biblioteca standard C furnisce diverse funzioni per leghje è scrive i fugliali per caratteri o cum'è una stringa di lunghezza fissa.
Scrivite à u schedariu
Eccu e funzioni più simplici per scrive caratteri à u flussu:
int fputc (int c, FILE *fp);
A funzione fputc () scrive u valore di u caratteru di u paràmetru c in u flussu di output chì u fp punta à. Se i scritture sò riesciuti, torna u caratteru scrittu è l'EOF si un errore si trova. Pudete aduprà a seguente funzione per scrive una stringa chì finisce cù un null à u flussu:
int fputs (const char *s, FILE *fp);
A funzione fputs () scrive a stringa s in u flussu di output induve l'fp punta. Se i scritturi riescenu, torna un valore micca negativu è l'EOF si un errore si trova. Pudete ancu aduprà a funzione di int fprintf (FILE * fp, const char * format,...) scrive una stringa à u schedariu. Pruvate u seguente esempiu:
Nota: Assicuratevi chì avete un repertoriu tmp dispunibule, è s'ellu ùn esiste micca, avete bisognu di creà in u vostru urdinatore prima.
/ tmp hè di solitu un repertoriu tempurale in u sistema Linux. Se corre nantu à u sistema Windows, avete bisognu di mudificà à un repertoriu esistente in l'ambiente lucale, cum'è: C: \ tmp, D: \ tmp, etc.
esempiu vivu
#include
Quandu u codice sopra hè compilatu è eseguitu, crea un novu file test.txt in u cartulare / tmp. È scrive à duie linee cù duie funzioni diverse. Leghjemu stu schedariu dopu.
Leghjite u schedariu
A seguente hè a funzione più simplice per leghje un caratteru unicu da un schedariu:
int fgetc ( FILE * fp );
A funzione fgetc () leghje un caratteru da u schedariu di input à quale u fp punta. U valore di ritornu hè u caratteru di lettura è l'EOF si un errore si trova. A funzione seguente permette di leghje una stringa da un flussu:
char *fgets ( char *buf , int n , FILE *fp );
A funzione fgets () leghje n-1 caratteri da u flussu di input direttu da fp. Copià a stringa di lettura à u buffer buf è aghjunghje un caratteru nulu à a fine per finisce a stringa.
Se sta funzione scontra un caratteru di linea spezzata '\ n' o l'EOF di a fine di u schedariu prima di leghje l'ultimu caratteru, allora torna solu à i caratteri letti, cumprese i salti di linea. Pudete ancu aduprà a funzione int fscanf (FILE * fp, const char * format,...) per leghje a stringa da u schedariu, ma ferma a lettura quandu scontru u primu spaziu è a linea break.
esempiu vivu
#include
Quandu u codice sopra hè cumpilatu è eseguitu, leghje i schedari creati in a sezione precedente, pruducendu i seguenti risultati:
1: Questu 2: hè in prova per fprintf...
3: Questu hè un test per fputs...
Prima, u metudu di fscanf () leghje solu Stu .perchè scontra un spaziu in u spinu. Siconda, chjamate functon fgets () per leghje a parte restante finu à a fine di a linea. Infine, chjamate fgets () per leghje a seconda fila cumpletamente.
Funzione I/O binaria
E seguenti duie funzioni sò aduprate per l'input binariu è l'output:
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 );
E duie funzioni sò leghjite è scrivite per i blocchi di almacenamento - di solitu arrays o strutture.
Sopra circa a lettura è a scrittura di u schedariu C appartene à HDV Phoelectron Technology Ltd., una operazione tecnica di software. È a cumpagnia per l'equipaggiu di rete (cum'è: ACONU/ cumunicazioneONU/ intelligenteONU/ fibraONU, etc.) hà riunitu una squadra di software putente, per ogni cliente persunalizà e richieste esclusive chì ne necessitanu, lasciate ancu i nostri prudutti più intelligenti è avanzati.