Beschreift wéi de C Programméierer eng Textdatei oder eng binär Datei erstellt, opmaacht an zoumaacht.
Eng Datei, bedeit eng Serie vu Bytes, egal ob et eng Textdatei oder eng binär Datei ass, C Language, bitt net nëmmen den Zougang zu den Top-Level Funktiounen, awer bitt och den ënnerierdesche (OS) Uruff fir Dateien um Späicherapparat ze veraarbechten . Dëst Kapitel wäert déi wichteg Appellen am Dokumentmanagement erklären.
oppen-Datei
Normalerweis benotzt d'Fopen () Funktioun fir eng nei Datei ze kreéieren oder eng existent Datei opzemaachen, initialiséiert dësen Uruff en Objet vum Typ FILE deen all déi néideg Informatioun enthält fir de Flux ze kontrolléieren. Hei ass de Prototyp vun dësem Funktiounsopruff:
FILE *fopen (const char * Dateinumm, const char * Modus);
Hei Dateinumm ass eng String fir eng Datei ze nennen, de Wäert vum Zougangsmodus kann ee vun de folgende Wäerter sinn:
Muster | Beschreiwung |
r | Öffnen eng existent Textdatei déi et erlaabt ze liesen. |
w | Öffnen eng Textdatei déi et erlaabt d'Datei ze schreiwen. Wann d'Datei net existéiert, gëtt eng nei Datei erstallt. Hei schreift Äre Programm den Inhalt vum Ufank vun der Datei. Wann d'Datei existéiert, gëtt se op Null Längt ofgeschnidden an nei geschriwwe ginn. |
a | Öffnen eng Textdatei a schreift op d'Datei an engem Append-Modus. Wann d'Datei net existéiert, gëtt eng nei Datei erstallt. Hei fügt Äre Programm Inhalt un déi Dateien déi Dir scho hutt. |
r+ | Öffnen eng Textdatei déi Iech erlaabt d'Datei ze liesen a schreiwen. |
w+ | Öffnen eng Textdatei déi Iech erlaabt d'Datei ze liesen a schreiwen. Wann d'Datei scho gëtt, gëtt d'Datei op Nulllängt ofgeschnidden, a wann d'Datei net existéiert, gëtt eng nei Datei erstallt. |
a+ | Öffnen eng Textdatei déi Iech erlaabt d'Datei ze liesen a schreiwen. Wann d'Datei net existéiert, gëtt eng nei Datei erstallt. D'Liesen fänkt um Ufank vun der Datei un, an d'Schreiwen ass nëmmen am Append-Modus. |
Wann d'binär Datei veraarbecht gëtt, benotzt de folgenden Zougangsmodus fir déi uewe genannten ze ersetzen:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
zougemaach Fichier
Fir de Fichier zouzemaachen, benotzt w.e.g. d'Fclose () Funktioun. De Prototyp vun der Funktioun ass wéi follegt:
int fclose (FILE *fp);
- Wann de Fichier erfollegräich zougemaach ass, gëtt d'fclose () Funktioun null, a wann de Feeler EOF zréck. Tatsächlech läscht dës Funktioun d'Donnéeën aus dem Puffer, mécht d'Datei zou a befreit all d'Erënnerung, déi fir dës Datei benotzt gëtt. EOF ass eng konstant an der Header Datei stdio.h definéiert
D'C Standardbibliothéik bitt verschidde Funktiounen fir Dateien ze liesen an ze schreiwen duerch Zeechen oder als fixe Längt String.
Schreift op de Fichier
Hei sinn déi einfachst Funktiounen fir Zeechen an de Stream ze schreiwen:
int fputc (int c, FILE *fp);
D'Funktioun fputc () schreift de Charakterwäert vum Parameter c an den Ausgangsstroum op deen de fp weist. Wann d'Schreiwe erfollegräich sinn, gëtt de schrëftleche Charakter an den EOF zréck wann e Feeler geschitt. Dir kënnt déi folgend Funktioun benotze fir eng String ze schreiwen déi mat enger Null op de Stream endet:
int fputs (const char *s, FILE *fp);
D'Funktioun fputs () schreift d'String s an den Ausgangsstroum wou de fp weist. Wann d'Schreiwe geléngt, gëtt et en net-negativen Wäert an den EOF zréck wann e Feeler geschitt. Dir kënnt och d'Funktioun vun int fprintf benotzen (FILE * fp, const char * Format, ...) schreift eng String an d'Datei. Probéiert dat folgend Beispill:
Notiz: Vergewëssert Iech datt Dir e verfügbaren tmp Verzeichnis hutt, a wann et net existéiert, musst Dir et als éischt op Ärem Computer erstellen.
/ tmp ass normalerweis e temporäre Verzeichnis um Linux System. Wann Dir op de Windows System leeft, musst Dir et an en existéierten Verzeechnes am lokalen Ëmfeld änneren, wéi: C: \ tmp, D: \ tmp, etc.
liewen Beispill
# enthalen
Wann den uewe genannte Code kompiléiert an ausgefouert gëtt, erstellt en neie Fichier test.txt am / tmp Verzeichnis. A schreift op zwou Linnen mat zwou verschiddene Funktiounen. Loosst eis dëse Fichier nächst liesen.
Liest de Fichier
Déi folgend ass déi einfachst Funktioun fir en eenzege Charakter aus enger Datei ze liesen:
int fgetc ( FILE * fp );
D'Fgetc () Funktioun liest e Charakter aus der Inputdatei op déi de fp weist. De Retourwäert ass de Lieszeechen an den EOF wann e Feeler geschitt. Déi folgend Funktioun erlaabt Iech e String aus engem Stream ze liesen:
char *fgets (char *buf, int n, FILE *fp);
D'Funktioun fgets () liest n-1 Zeechen aus dem Input Stream, dee vum fp geriicht gëtt. Et kopéiert d'Liesstring op de Pufferbuf an fügt en Null Charakter um Enn un fir d'String ofzeschléissen.
Wann dës Funktioun e gebrochenen Zeil Charakter '\ n' oder den EOF vum Enn vun der Datei begéint ier de leschte Charakter gelies gëtt, da gëtt nëmmen zréck op d'Lieszeechen, inklusiv Zeilpausen. Dir kënnt och d'Funktioun int fscanf (FILE * fp, const char * Format, ...) benotzen fir d'String aus der Datei ze liesen, awer et hält op d'Liesen wann Dir op den éischte Raum an Zeilpaus begéint.
liewen Beispill
# enthalen
Wann den uewe genannte Code kompiléiert an ausgefouert gëtt, liest et d'Dateien, déi an der viregter Sektioun erstallt goufen, déi folgend Resultater produzéieren:
1: Dës 2: testt fir fprintf ...
3: Dëst ass Test fir fputs ...
Éischtens liest d'Method vun fscanf () nëmmen This .well et e Raum am Réck begéint. Zweetens, rufft functon fgets () fir de reschtlechen Deel bis zum Enn vun der Linn ze liesen. Endlech, rufft fgets () fir déi zweet Zeil komplett ze liesen.
Binär I / O Funktioun
Déi folgend zwou Funktiounen gi fir de binäre Input an Output benotzt:
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);
Béid Funktiounen gi gelies a schreiwen fir Späicherblocken - normalerweis Arrays oder Strukturen.
Uewen iwwer C Fichier liesen a schreiwen gehéiert HDV Phoelectron Technology Ltd., eng Software technesch Operatioun. An d'Firma fir Netzwierkrelatéiert Ausrüstung (wéi: ACONU/ KommunikatiounONU/ intelligentONU/ FaserONU, etc.) huet e mächtege Software Team zesummebruecht, fir all Client personaliséiere déi exklusiv Ufuerderungen déi et brauchen, och eis Produkter méi intelligent a fortgeschratt loossen.