C-Dateien-E/A: Erstellen, Öffnen, Lesen, Schreiben und Schließen einer Datei

C Dateiverwaltung

Eine Datei kann verwendet werden, um eine große Menge persistenter Daten zu speichern. Wie viele andere Sprachen bietet 'C' folgende Dateiverwaltungsfunktionen:

  1. Erstellung einer Datei
  2. Öffnen einer Datei
  3. Eine Datei lesen
  4. In eine Datei schreiben
  5. Schließen einer Datei

Nachfolgend sind die wichtigsten Dateiverwaltungsfunktionen aufgeführt, die in C:

Funktion Zweck
fopen() Erstellen einer Datei oder Öffnen einer vorhandenen Datei
fclose() Schließen einer Datei
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 angegebenen Speicherort fest
ftell () Gibt die aktuelle Position eines Dateizeigers zurück
zurückspulen () Setzt den Dateizeiger am Anfang einer Datei

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 Speicherplatz in einem Speicher, in dem Daten gespeichert werden.

Um eine Datei in einem C-Programm zu erstellen, wird 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, die zum Öffnen einer Datei verwendet wird.

  • Wenn die Datei nicht auf dem System vorhanden ist, wird sie erstellt und dann geöffnet.
  • Ist eine Datei bereits auf dem System vorhanden, wird sie direkt hierüber geöffnet Funktion.

fp ist ein Dateizeiger, der auf die Typdatei zeigt.

Wenn 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. Ein Modus wird verwendet, um anzugeben, 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. Befindet sich eine Datei im Lesemodus, 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 eine Datei überhaupt nicht existiert. Wenn eine Datei bereits auf einem System vorhanden ist, werden alle darin enthaltenen Daten gekürzt und die Datei zum Schreiben geöffnet.
a Öffnen Sie eine Datei in
Anhängemodus. Wenn sich eine Datei im Anhängemodus befindet, wird die Datei geöffnet. Der Inhalt der Datei ändert sich nicht.
r+ von Anfang an zum Lesen und Schreiben geöffnet
w+ Zum Lesen und Schreiben geöffnet und eine Datei überschrieben
a+ Zum Lesen und Schreiben öffnen, an Datei anhängen

In der angegebenen Syntax werden der Dateiname und der Modus als Zeichenfolgen angegeben und müssen daher immer in Anführungszeichen eingeschlossen werden.

Beispiel:

#include <stdio.h>
int main() {
FILE *fp;
fp  = fopen ("data.txt", "w");
}

Ausgang:

Die Datei wird in demselben Ordner erstellt, in dem Sie Ihren Code gespeichert haben.

So erstellen Sie eine Datei

Sie können den Pfad angeben, in dem Sie Ihre Datei erstellen möchten

#include <stdio.h>
int main() {
FILE *fp;
fp  = fopen ("D://data.txt", "w");
}

So erstellen Sie eine Datei

So schließen Sie eine Datei

Man sollte eine Datei immer schließen, wenn die Vorgänge an der Datei abgeschlossen sind. Das bedeutet, dass der Inhalt und die Links zur Datei beendet werden. Dies verhindert eine versehentliche Beschädigung der Datei.

'C' stellt die Funktion fclose bereit, um Dateischließvorgänge durchzuführen. Die Syntax von fclose lautet wie folgt:

fclose (file_pointer);

Beispiel:

FILE *fp;
fp  = fopen ("data.txt", "r");
fclose (fp);

Die Funktion fclose akzeptiert einen Dateizeiger als Argument. Die mit dem Dateizeiger verknüpfte Datei wird dann mit Hilfe der Funktion fclose geschlossen. Es gibt 0 zurück, wenn das Schließen erfolgreich war, und EOF (Ende der Datei), wenn beim Schließen der Datei ein Fehler aufgetreten ist.

Nach dem Schließen der Datei kann derselbe Dateizeiger auch mit anderen 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): Es schreibt ein Zeichen in die Datei, auf die file_pointer zeigt.
  • fputs(str, file_pointer): Es 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 Formatbezeichner und eine Liste von Variablen variable_lists enthalten.

Das folgende Programm zeigt, wie das Schreiben in eine Datei durchgeführt wird:

fputc() Funktion:

#include <stdio.h>
int 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;
    }

Ausgang:

In eine Datei schreiben

Das obige Programm schreibt ein einzelnes Zeichen in das fputc_test.txt Datei, bis das nächste Zeilensymbol „\n“ erreicht ist, das anzeigt, dass der Satz erfolgreich geschrieben wurde. Der Prozess besteht darin, jedes Zeichen des Arrays zu nehmen und in die Datei zu schreiben.

In eine Datei schreiben

  1. Im obigen Programm haben wir eine Datei namens fputc_test.txt im Schreibmodus erstellt und geöffnet und deklarieren unseren String, der in die Datei geschrieben wird.
  2. Wir führen mithilfe einer For-Schleife einen Schreibvorgang Zeichen für Zeichen durch und fügen jedes Zeichen in unsere Datei ein, bis das Zeichen „\n“ gefunden wird. Anschließend wird die Datei mithilfe der Funktion „fclose“ geschlossen.

fputs() Funktion:

#include <stdio.h>
int 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);
    }

Ausgang:

In eine Datei schreiben

In eine Datei schreiben

  1. Im obigen Programm haben wir eine Datei namens fputs_test.txt erstellt und im Schreibmodus geöffnet.
  2. Nachdem wir eine Schreiboperation mit der Funktion fputs() durchgeführt haben, schreiben wir drei verschiedene Streicher
  3. Anschließend wird die Datei mit der Funktion fclose geschlossen.

fprintf()Funktion:

#include <stdio.h>
    int 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;
    }

Ausgang:

In eine Datei schreiben

In eine Datei schreiben

  1. Im obigen Programm haben wir eine Datei namens fprintf_test.txt erstellt und im Schreibmodus geöffnet.
  2. Nachdem ein Schreibvorgang 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): Es 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(Puffer, n, Dateizeiger): Es liest n-1 Zeichen aus der Datei und speichert die Zeichenfolge in einem Puffer, wobei als letztes Zeichen das NULL-Zeichen '\0' angehängt wird.
  • fscanf(file_pointer, Conversion_specifiers, variable_adresses): Es wird zum Parsen und Analysieren von Daten verwendet. Es liest Zeichen aus der Datei und ordnet die Eingabe einer Liste von zu Variablenzeiger variable_adresses mithilfe von Konvertierungsspezifizierern. Beachten Sie, dass fscanf wie bei scanf das Lesen einer Zeichenfolge stoppt, wenn ein Leerzeichen oder ein Zeilenumbruch auftritt.

Das folgende Programm demonstriert das Lesen aus der Datei fputs_test.txt unter Verwendung der Funktionen fgets(), fscanf() und fgetc():

#include <stdio.h>
int 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 pointer
        char 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 pointer
        while ((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

Daten aus einer Datei lesen

  1. 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 sie mit der Funktion fgets(), die Zeile für Zeile liest, wobei die Puffergröße ausreichen muss, um die gesamte Zeile zu verarbeiten.
  2. Wir öffnen die Datei erneut, um die Zeigerdatei so zurückzusetzen, dass sie auf den Anfang der Datei zeigt. Erstellen Sie verschiedene Zeichenfolgenvariablen, um jedes Wort separat zu verarbeiten. Drucken Sie die Variablen aus, um ihren Inhalt anzuzeigen. fscanf() wird hauptsächlich zum Extrahieren und Analysieren von Daten aus einer Datei verwendet.
  3. Öffnen Sie die Datei erneut, um die Zeigerdatei so zurückzusetzen, dass sie auf den Anfang der Datei zeigt. Lesen Sie Daten und drucken Sie sie Zeichen für Zeichen aus der Datei mit der Funktion getc() aus, bis die EOF-Anweisung auftritt
  4. Nachdem wir mit verschiedenen Varianten einen Lesevorgang der Datei durchgeführt haben, haben wir die Datei erneut mit der Funktion fclose geschlossen.

Interaktives Lesen und Schreiben von Dateien mit getc und putc

Dies sind die einfachsten Dateioperationen. Getc steht für „Get Character“ und putc für „Put Character“. Diese beiden Funktionen werden verwendet, um jeweils nur ein einzelnes Zeichen zu verarbeiten.

Das folgende Programm demonstriert die Dateiverwaltungsfunktionen in der C-Programmierung:

#include <stdio.h>
int main() {
        FILE * fp;
        char c;
        printf("File Handling\n");
        //open a file
        fp = fopen("demo.txt", "w");
        //writing operation
        while ((c = getchar()) != EOF) {
            putc(c, fp);
        }
        //close file
        fclose(fp);
        printf("Data Entered:\n");
        //reading
        fp = fopen("demo.txt", "r");
        while ((c = getc(fp)) != EOF) {
            printf("%c", c);
        }
        fclose(fp);
        return 0;
    }

Ausgang:

Interaktives Lesen und Schreiben von Dateien mit getc und putc

Interaktives Lesen und Schreiben von Dateien mit getc und putc

  1. Im obigen Programm haben wir eine Datei namens Demo erstellt und im Schreibmodus geöffnet.
  2. Nachdem ein Schreibvorgang ausgeführt wurde, wird die Datei mit der Funktion fclose geschlossen.
  3. Wir haben erneut eine Datei geöffnet, die nun Daten im Lesemodus enthält. Eine While-Schleife wird ausgeführt, bis das Ende der Datei gefunden ist. Sobald das Ende der Datei gefunden ist, wird der Vorgang beendet und die Daten werden mithilfe der Funktion printf angezeigt.
  4. Nach der Durchführung eines Lesevorgangs wird die Datei mit der Funktion fclose wieder geschlossen.

Zusammenfassung

  • Eine Datei ist ein Bereich in einem Speicher, in dem Daten gespeichert werden.
  • Die C-Programmierung bietet verschiedene Funktionen für den Umgang mit einer Datei.
  • Ein Mechanismus zur Manipulation von Dateien wird als Dateiverwaltung bezeichnet.
  • Eine Datei muss geöffnet werden, bevor Operationen an ihr durchgeführt werden können.
  • Eine Datei kann im Lese-, Schreib- oder Anhängemodus geöffnet werden.
  • Die Funktionen Getc und Putc werden zum Lesen und Schreiben eines einzelnen Zeichens verwendet.
  • Die Funktion fscanf() ermöglicht das Lesen und Analysieren von Daten aus einer Datei
  • Wir können lesen (mit das getc Funktion) eine gesamte Datei durch Schleifen, um die gesamte Datei abzudecken, bis das EOF auftritt
  • Mit der Funktion können wir in eine Datei schreiben, nachdem wir ihren Namen erstellt haben fprintf() und am Ende des Zeichenfolgentexts muss das Newline-Zeichen stehen.