C Dateien I/O: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,
- Erstellen einer Datei
- Öffnen einer Datei
- Eine Datei lesen
- In eine Datei schreiben
- Schließen einer Datei
Im Folgenden sind die wichtigsten Dateiverwaltungsfunktionen aufgeführt, die in „C“
verfügbar sind
In diesem Tutorial lernen Sie-
- So erstellen Sie eine Datei
- So schließen Sie eine Datei:
- Schreiben in eine Datei
- 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
Wenn Sie mit einer Datei arbeiten möchten, müssen Sie zunächst eine Datei 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 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, die zum Öffnen einer Datei verwendet 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 direkt über diese Funktion geöffnet.
fp ist ein Dateizeiger, der auf den Typ file.
zeigtImmer wenn Sie eine Datei öffnen oder erstellen, müssen Sie angeben, was Sie mit der Datei machen wollen. Eine Datei in 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.
Anfügemodus. Wenn sich eine Datei im Anhängemodus befindet, wird die Datei geöffnet. Der Inhalt der Datei ändert sich nicht.r+ zum Lesen und Schreiben von Anfang an öffnenw+zum Lesen und Schreiben öffnen, eine Datei überschreibena+zum Lesen und Schreiben öffnen, an eine Datei anhängen
In der gegebenen Syntax werden der Dateiname und der Modus als Strings angegeben und müssen daher immer in doppelte Anführungszeichen gesetzt werden.
Beispiel:
#include <stdio.h> int 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
#include <stdio.h> int main() { FILE *fp; fp = fopen ("D://data.txt", "w"); }
So schließen Sie eine Datei
Man sollte eine Akte immer dann schließen, wenn die Operationen an der Akte beendet sind. Dies bedeutet, dass die Inhalte und Links zu der Datei beendet werden. Dies verhindert eine versehentliche Beschädigung der Datei.
‚C‘ stellt die fclose-Funktion bereit, um eine Dateischließoperation durchzuführen. Die Syntax von fclose lautet wie folgt:
fclose (file_pointer);
Beispiel:
FILE *fp; fp = fopen ("data.txt", "r"); fclose (fp);
Die fclose-Funktion nimmt 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 fclose-Funktion ist eine gute Programmierpraxis.
In eine Datei schreiben
Wenn Sie in C in eine Datei schreiben, müssen Zeilenumbruchzeichen ‚\n‘ explizit hinzugefügt werden.
Die stdio-Bibliothek bietet die notwendigen Funktionen, um in eine Datei zu schreiben:
- fputc(char, file_pointer) :Es schreibt ein Zeichen in die Datei, auf die file_pointer zeigt.
- fputs(str, file_pointer) :Es schreibt einen String in die Datei, auf die file_pointer. zeigt
- fprintf(file_pointer, str, variable_lists) :Es gibt einen String in die Datei aus, auf die file_pointer zeigt. Die Zeichenfolge kann optional Formatbezeichner und eine Liste von Variablen variable_lists enthalten.
Das folgende Programm zeigt, wie man in eine Datei schreibt:
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; }
Ausgabe:
Das obige Programm schreibt ein einzelnes Zeichen in die fputc_test.txt bis zum nächsten Zeilensymbol „\n“, das anzeigt, dass der Satz erfolgreich geschrieben wurde. Der Prozess besteht darin, jedes Zeichen des Arrays zu nehmen und es in die Datei zu schreiben.
- Im obigen Programm haben wir eine Datei namens fputc_test.txt in einem Schreibmodus erstellt und geöffnet und deklarieren unseren String, der in die Datei geschrieben wird.
- Wir führen eine zeichenweise Schreiboperation mit einer for-Schleife durch und fügen jedes Zeichen in unsere Datei ein, bis das Zeichen „\n“ gefunden wird, dann wird die Datei mit 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); }
AUSGABE:
- Im obigen Programm haben wir eine Datei namens fputs_test.txt im Schreibmodus erstellt und geöffnet.
- Nachdem wir eine Schreiboperation mit der Funktion fputs() durchgeführt haben, indem wir drei verschiedene Strings geschrieben haben
- Dann 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; }
AUSGABE:
- Im obigen Programm haben wir eine Datei namens fprintf_test.txt erstellt und im Schreibmodus geöffnet.
- Nachdem eine Schreiboperation mit der Funktion fprintf() durch Schreiben einer Zeichenkette durchgefü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 das EOF zurückgesendet.
- fgets(buffer, n, file_pointer): Es liest n-1 Zeichen aus der Datei und speichert den String in einem Puffer, in dem das NULL-Zeichen ‚\0‘ als letztes Zeichen angehängt wird.
- fscanf(file_pointer, conversion_specifiers, variable_adresses) :Es wird verwendet, um Daten zu parsen und zu analysieren. Es liest Zeichen aus der Datei und weist die Eingabe einer Liste von Variablenzeigern variable_adresses unter Verwendung von Konvertierungsbezeichnern zu. Denken Sie daran, dass fscanf wie bei scanf aufhört, einen String zu lesen, wenn ein Leerzeichen oder ein Zeilenumbruch gefunden wird.
Das folgende Programm demonstriert das Lesen aus der Datei fputs_test.txt mit den Funktionen fgets(), fscanf() bzw. 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
- Im obigen Programm haben wir die Datei namens „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 so zurückzusetzen, dass sie auf den Anfang der Datei zeigt. Erstellen Sie verschiedene String-Variablen, um jedes Wort separat zu behandeln. Drucken Sie die Variablen, um ihren Inhalt zu sehen. fscanf() wird hauptsächlich verwendet, um Daten aus einer Datei zu extrahieren und zu parsen.
- Öffnen Sie die Datei erneut, um die Zeigerdatei so zurückzusetzen, dass sie auf den Anfang der Datei zeigt. Daten lesen und Zeichen für Zeichen mit der Funktion getc() aus der Datei drucken, bis die EOF-Anweisung gefunden wird
- Nachdem wir eine Datei mit verschiedenen Varianten gelesen haben, haben wir die Datei wieder 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-Zeichen und Putc steht für Put-Zeichen. Diese beiden Funktionen werden verwendet, um jeweils nur ein einzelnes Zeichen zu verarbeiten.
Das folgende Programm demonstriert die Dateihandhabungsfunktionen 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; }
Ausgabe:
- Im obigen Programm haben wir eine Datei namens Demo erstellt und in einem Schreibmodus geöffnet.
- Nachdem ein Schreibvorgang durchgeführt wurde, wird die Datei mit der Funktion fclose geschlossen.
- Wir haben erneut eine Datei geöffnet, die nun Daten im Lesemodus enthält. Eine While-Schleife wird ausgeführt, bis das eof gefunden wird. Sobald das Dateiende gefunden ist, wird die Operation beendet und die Daten werden mit der printf-Funktion angezeigt.
- Nach einem Lesevorgang wird die Datei wieder mit der Funktion fclose geschlossen.
Zusammenfassung
- Eine Datei ist ein Bereich in einem Speicher, in dem Daten gespeichert werden.
- Die „C“-Programmierung bietet verschiedene Funktionen, um mit einer Datei umzugehen.
- Ein Mechanismus zur Bearbeitung von Dateien wird als Dateiverwaltung bezeichnet.
- Eine Datei muss geöffnet werden, bevor Operationen an ihr ausgeführt werden können.
- Eine Datei kann im Lese-, Schreib- oder Anhängemodus geöffnet werden.
- Getc- und Putc-Funktionen werden verwendet, um ein einzelnes Zeichen zu lesen und zu schreiben.
- Die Funktion fscanf() erlaubt das Lesen und Parsen von Daten aus einer Datei
- Wir können lesen (mit dem getc Funktion) eine ganze Datei durch eine Schleife, um die gesamte Datei abzudecken, bis das EOF gefunden wird
- Wir können in eine Datei schreiben, nachdem wir ihren Namen erstellt haben, indem wir die Funktion fprintf() verwenden und es muss das Newline-Zeichen am Ende der Zeichenfolge text. haben
C Sprache
- C#-Variablen und (primitive) Datentypen
- C Eingang Ausgang (E/A)
- C Dateiverwaltung
- Python-Datei-I/O
- Apacer:CV110-SD- und CV110-MSD-Karten weltweit eingeführt
- Apacer:SV250 SSD-Serie in Industriequalität mit Lese-/Schreibgeschwindigkeiten von 560 und 520 MB/s
- acceed:I/O-Module für skalierbare Datenkommunikation
- Raspberry PI I/O Breakout-Kabel und Plugboard-Adapter
- C - Datei-E/A
- C - Header-Dateien