C Dateiverwaltung
In einer Datei kann ein großes Volumen persistenter Daten gespeichert werden. Wie viele andere Sprachen bietet 'C' folgende Dateiverwaltungsfunktionen:
- Erstellung einer Datei
- Datei öffnen
- Eine Datei lesen
- In eine Datei schreiben
- Eine Datei schließen
Im Folgenden sind die wichtigsten Dateiverwaltungsfunktionen aufgeführt, die in 'C' verfügbar sind.
Funktion | Zweck |
fopen () | Erstellen einer Datei oder Öffnen einer vorhandenen Datei |
fclose () | Eine Datei schließen |
fprintf () | Schreiben eines Datenblocks in eine Datei |
fscanf () | Blockdaten aus einer Datei lesen |
getc () | Liest ein einzelnes Zeichen aus einer Datei |
putc () | Schreibt ein einzelnes Zeichen in eine Datei |
Erhalten w () | Liest eine Ganzzahl aus einer Datei |
putw () | Schreiben einer Ganzzahl in eine Datei |
fseek () | Legt die Position eines Dateizeigers auf einen bestimmten Speicherort fest |
ftell () | Gibt die aktuelle Position eines Dateizeigers zurück |
zurückspulen () | Legt den Dateizeiger am Anfang einer Datei fest |
In diesem Tutorial lernen Sie:
- So erstellen Sie eine Datei
- So schließen Sie eine Datei:
- In eine Datei schreiben
- fputc () Funktion:
- fputs () Funktion:
- fprintf () Funktion:
- Daten aus einer Datei lesen
- Interaktives Lesen und Schreiben von Dateien mit getc und putc
So erstellen Sie eine Datei
Wann immer Sie mit einer Datei arbeiten möchten, besteht der erste Schritt darin, eine Datei zu erstellen. Eine Datei ist nichts anderes als ein Speicherplatz in einem Speicher, in dem Daten gespeichert sind.
Um eine Datei in einem 'C'-Programm zu erstellen, wird die folgende Syntax verwendet:
FILE *fp;fp = fopen ("file_name", "mode");
In der obigen Syntax ist die Datei eine Datenstruktur, die in der Standardbibliothek definiert ist.
fopen ist eine Standardfunktion, mit der eine Datei geöffnet wird.
- Wenn die Datei nicht auf dem System vorhanden ist, wird sie erstellt und dann geöffnet.
- Wenn eine Datei bereits auf dem System vorhanden ist, wird sie mit dieser Funktion direkt geöffnet.
fp ist ein Dateizeiger, der auf die Typdatei zeigt.
Wann immer Sie eine Datei öffnen oder erstellen, müssen Sie angeben, was Sie mit der Datei tun möchten. Eine Datei in der C-Programmierung kann zum Lesen / Schreiben erstellt oder geöffnet werden. In einem Modus wird angegeben, ob Sie eine Datei für einen der unten angegebenen Zwecke öffnen möchten. Im Folgenden sind die verschiedenen Arten von Modi in der C-Programmierung aufgeführt, die beim Arbeiten mit einer Datei verwendet werden können.
Dateimodus | Beschreibung |
r | Öffnen Sie eine Datei zum Lesen. Wenn sich eine Datei im Lesemodus befindet, werden keine Daten gelöscht, wenn eine Datei bereits auf einem System vorhanden ist. |
w | Öffnen Sie eine Datei zum Schreiben. Wenn sich eine Datei im Schreibmodus befindet, wird eine neue Datei erstellt, wenn überhaupt keine Datei vorhanden ist. Wenn eine Datei bereits auf einem System vorhanden ist, werden alle Daten in der Datei abgeschnitten und zum Schreiben geöffnet. |
ein | Öffnen Sie eine Datei im Anhänge-Modus. Wenn sich eine Datei im Anhänge-Modus befindet, wird die Datei geöffnet. Der Inhalt der Datei ändert sich nicht. |
r + | offen für lesen und schreiben von anfang an |
w + | offen zum Lesen und Schreiben, Überschreiben einer Datei |
a + | zum Lesen und Schreiben öffnen, an Datei anhängen |
In der angegebenen Syntax werden der Dateiname und der Modus als Zeichenfolgen angegeben, daher müssen sie immer in doppelte Anführungszeichen gesetzt werden.
Beispiel:
#includeint main() {FILE *fp;fp = fopen ("data.txt", "w");}
Ausgabe:
Die Datei wird in demselben Ordner erstellt, in dem Sie Ihren Code gespeichert haben.
Sie können den Pfad angeben, in dem Sie Ihre Datei erstellen möchten
#includeint main() {FILE *fp;fp = fopen ("D://data.txt", "w");}
So schließen Sie eine Datei
Man sollte immer eine Datei schließen, wenn die Operationen in der Datei beendet sind. Dies bedeutet, dass der Inhalt und die Links zur Datei beendet werden. Dies verhindert eine versehentliche Beschädigung der Datei.
'C' bietet die Funktion fclose zum Ausführen des Dateischließvorgangs. Die Syntax von fclose lautet wie folgt:
fclose (file_pointer);
Beispiel:
FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);
Die Funktion fclose verwendet einen Dateizeiger als Argument. Die dem Dateizeiger zugeordnete Datei wird dann mit Hilfe der Funktion fclose geschlossen. Es gibt 0 zurück, wenn das Schließen erfolgreich war, und EOF (Dateiende), wenn beim Schließen der Datei ein Fehler aufgetreten ist.
Nach dem Schließen der Datei kann der gleiche Dateizeiger auch für andere Dateien verwendet werden.
Bei der C-Programmierung werden Dateien automatisch geschlossen, wenn das Programm beendet wird. Das manuelle Schließen einer Datei durch Schreiben der Funktion fclose ist eine gute Programmierpraxis.
In eine Datei schreiben
Wenn Sie in C in eine Datei schreiben, müssen die Zeilenumbruchzeichen '\ n' explizit hinzugefügt werden.
Die stdio-Bibliothek bietet die notwendigen Funktionen zum Schreiben in eine Datei:
- fputc (char, file_pointer) : Schreibt ein Zeichen in die Datei, auf die file_pointer zeigt.
- fputs (str, file_pointer) : Schreibt eine Zeichenfolge in die Datei, auf die file_pointer zeigt.
- fprintf (file_pointer, str, variable_lists) : Es wird eine Zeichenfolge in die Datei gedruckt, auf die file_pointer zeigt. Die Zeichenfolge kann optional Formatspezifizierer und eine Liste von Variablen variable_lists enthalten.
Das folgende Programm zeigt, wie Sie in eine Datei schreiben:
fputc () Funktion:
#includeint main() {int i;FILE * fptr;char fn[50];char str[] = "Guru99 Rocks\n";fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode"for (i = 0; str[i] != '\n'; i++) {/* write to file using fputc() function */fputc(str[i], fptr);}fclose(fptr);return 0;}
Ausgabe:
Das obige Programm schreibt ein einzelnes Zeichen in die Datei fputc_test.txt , bis es das nächste Zeilensymbol "\ n" erreicht, das angibt, dass der Satz erfolgreich geschrieben wurde. Der Prozess besteht darin, jedes Zeichen des Arrays in die Datei zu schreiben.
- Im obigen Programm haben wir eine Datei mit dem Namen fputc_test.txt im Schreibmodus erstellt und geöffnet und deklarieren unsere Zeichenfolge, die in die Datei geschrieben wird.
- Wir führen eine zeichenweise Schreiboperation mit der for-Schleife durch und fügen jedes Zeichen in unsere Datei ein, bis das Zeichen "\ n" gefunden wird. Anschließend wird die Datei mit der Funktion fclose geschlossen.
fputs () Funktion:
#includeint main() {FILE * fp;fp = fopen("fputs_test.txt", "w+");fputs("This is Guru99 Tutorial on fputs,", fp);fputs("We don't need to use for loop\n", fp);fputs("Easier than fputc function\n", fp);fclose(fp);return (0);}
AUSGABE:
- Im obigen Programm haben wir eine Datei mit dem Namen fputs_test.txt im Schreibmodus erstellt und geöffnet.
- Nachdem wir eine Schreiboperation mit der Funktion fputs () ausgeführt haben, schreiben wir drei verschiedene Zeichenfolgen
- Anschließend wird die Datei mit der Funktion fclose geschlossen.
fprintf () Funktion:
#includeint main() {FILE *fptr;fptr = fopen("fprintf_test.txt", "w"); // "w" defines "writing mode"/* write to file */fprintf(fptr, "Learning C with Guru99\n");fclose(fptr);return 0;}
AUSGABE:
- Im obigen Programm haben wir eine Datei namens fprintf_test.txt im Schreibmodus erstellt und geöffnet.
- Nachdem eine Schreiboperation mit der Funktion fprintf () durch Schreiben einer Zeichenfolge ausgeführt wurde, wird die Datei mit der Funktion fclose geschlossen.
Daten aus einer Datei lesen
Es gibt drei verschiedene Funktionen zum Lesen von Daten aus einer Datei
- fgetc (file_pointer): Gibt das nächste Zeichen aus der Datei zurück, auf die der Dateizeiger zeigt. Wenn das Ende der Datei erreicht ist, wird der EOF zurückgesendet.
- fgets (buffer, n, file_pointer): Liest n-1 Zeichen aus der Datei und speichert die Zeichenfolge in einem Puffer, in dem das NULL-Zeichen '\ 0' als letztes Zeichen angehängt wird.
- fscanf (Dateipointer, Konvertierungsspezifizierer, Variablenadressen) : Wird zum Parsen und Analysieren von Daten verwendet. Es liest Zeichen aus der Datei und weist die Eingabe mithilfe von Konvertierungsspezifizierern einer Liste von Variablenzeigern zu. Beachten Sie, dass fscanf wie bei scanf aufhört, eine Zeichenfolge zu lesen, wenn Leerzeichen oder Zeilenumbrüche auftreten.
Das folgende Programm demonstriert das Lesen aus der Datei fputs_test.txt mit den Funktionen fgets (), fscanf () und fgetc ():
#includeint main() {FILE * file_pointer;char buffer[30], c;file_pointer = fopen("fprintf_test.txt", "r");printf("----read a line----\n");fgets(buffer, 50, file_pointer);printf("%s\n", buffer);printf("----read and parse data----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerchar str1[10], str2[2], str3[20], str4[2];fscanf(file_pointer, "%s %s %s %s", str1, str2, str3, str4);printf("Read String1 |%s|\n", str1);printf("Read String2 |%s|\n", str2);printf("Read String3 |%s|\n", str3);printf("Read String4 |%s|\n", str4);printf("----read the entire file----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerwhile ((c = getc(file_pointer)) != EOF) printf("%c", c);fclose(file_pointer);return 0;}
Ergebnis:
----read a line----Learning C with Guru99----read and parse data----Read String1 |Learning|Read String2 |C|Read String3 |with|Read String4 |Guru99|----read the entire file----Learning C with Guru99
- Im obigen Programm haben wir die Datei "fprintf_test.txt" geöffnet, die zuvor mit der Funktion fprintf () geschrieben wurde und die Zeichenfolge "Learning C with Guru99" enthält. Wir lesen es mit der Funktion fgets (), die Zeile für Zeile liest, wobei die Puffergröße ausreichen muss, um die gesamte Zeile zu verarbeiten.
- Wir öffnen die Datei erneut, um die Zeigerdatei auf den Anfang der Datei zurückzusetzen. Erstellen Sie verschiedene Zeichenfolgenvariablen, um jedes Wort separat zu behandeln. Drucken Sie die Variablen aus, um deren Inhalt anzuzeigen. Mit fscanf () werden hauptsächlich Daten aus einer Datei extrahiert und analysiert.
- Öffnen Sie die Datei erneut, um die Zeigerdatei auf den Anfang der Datei zurückzusetzen. Lesen Sie die Daten und drucken Sie sie Zeichen für Zeichen mit der Funktion getc () aus der Datei, bis die EOF-Anweisung gefunden wird
- Nachdem wir eine Leseoperationsdatei mit verschiedenen Varianten ausgeführt hatten, schlossen wir die Datei erneut mit der Funktion fclose.
Interaktives Lesen und Schreiben von Dateien mit getc und putc
Dies sind die einfachsten Dateivorgänge. Getc steht für get charakter und putc steht für put charakter. Diese beiden Funktionen werden verwendet, um jeweils nur ein Zeichen zu verarbeiten.
Das folgende Programm demonstriert die Dateibehandlungsfunktionen in der C-Programmierung:
#includeint main() {FILE * fp;char c;printf("File Handling\n");//open a filefp = fopen("demo.txt", "w");//writing operationwhile ((c = getchar()) != EOF) {putc(c, fp);}//close filefclose(fp);printf("Data Entered:\n");//readingfp = fopen("demo.txt", "r");while ((c = getc(fp)) != EOF) {printf("%c", c);}fclose(fp);return 0;}
Ausgabe:
- Im obigen Programm haben wir eine Datei namens Demo in einem Schreibmodus erstellt und geöffnet.
- Nachdem ein Schreibvorgang ausgeführt wurde, wird die Datei mit der Funktion fclose geschlossen.
- Wir haben wieder eine Datei geöffnet, die jetzt Daten im Lesemodus enthält. Eine while-Schleife wird ausgeführt, bis der eof gefunden ist. Sobald das Dateiende gefunden wurde, wird der Vorgang beendet und die Daten werden mit der Funktion printf angezeigt.
- Nach dem Ausführen eines Lesevorgangs wird die Datei mit der Funktion fclose wieder geschlossen.
Zusammenfassung
- Eine Datei ist ein Speicherplatz in einem Speicher, in dem Daten gespeichert werden.
- Die C-Programmierung bietet verschiedene Funktionen für den Umgang mit einer Datei.
- Ein Mechanismus zum Bearbeiten der Dateien wird als Dateiverwaltung bezeichnet.
- Eine Datei muss geöffnet werden, bevor Vorgänge ausgeführt werden können.
- Eine Datei kann im Lese-, Schreib- oder Anhänge-Modus geöffnet werden.
- Getc- und Putc-Funktionen werden zum Lesen und Schreiben eines einzelnen Zeichens verwendet.
- Mit der Funktion fscanf () können Daten aus einer Datei gelesen und analysiert werden
- Wir können (mit der Funktion getc ) eine gesamte Datei lesen, indem wir eine Schleife ausführen, um die gesamte Datei abzudecken, bis die EOF angetroffen wird
- Wir können in eine Datei schreiben, nachdem wir ihren Namen mit der Funktion fprintf () erstellt haben, und sie muss das Zeilenumbruchzeichen am Ende des Zeichenfolgentextes haben.