C-Standardbibliothek -<stdio.h>
Einführung
stdio .hDie Header-Datei definiert drei Variablentypen, eine Reihe von Makros und verschiedene Funktionen für die Ein- und Ausgabe.
<stdio.h>Es ist eine Header-Datei in der C-Standardbibliothek, die verschiedene Funktionen und Typen für die Handhabung von Dateien und Standard-Ein-/Ausgabestreams definiert.
Bibliotheksvariablen
Die folgenden Variablentypen sind in der Header-Datei stdio.h definiert:
| Laufende Nummer | Variablen & Beschreibung |
|---|---|
| 1 | size_t Dies ist ein vorzeichenloser Ganzzahltyp, der das Ergebnis des Schlüsselwortssizeofist und die Größe eines Objekts angibt. |
| 2 | FILE Datei-Stream-Typ, ein Objekttyp, der zum Speichern von Datei-Stream-Informationen geeignet ist. |
| 3 | fpos_t Dateipositions-Typ, ein Objekttyp, der zum Speichern jeder beliebigen Position innerhalb einer Datei geeignet ist. |
Bibliotheksmakros
Die folgenden Makros sind in der Header-Datei stdio.h definiert:
| Laufende Nummer | Makros & Beschreibung |
|---|---|
| 1 | NULL Dieses Makro ist der Wert einer Nullzeigerkonstante. |
| 2 | _IOFBF, _IOLBFund _IONBF These macros expand to integer constant expressions with specific values and are suitable forsetvbufden dritten Parameter der Funktion. |
| 3 | BUFSIZ This macro is an integer that representssetbufdie von der Funktion verwendete Puffergröße darstellt. |
| 4 | EOF Dieses Makro ist eine negative Ganzzahl, die angibt, dass das Ende der Datei erreicht wurde. |
| 5 | FOPEN_MAX Dieses Makro ist eine Ganzzahl, die die Anzahl der Dateien darstellt, die das System gleichzeitig öffnen kann. |
| 6 | FILENAME_MAX Dieses Makro ist eine Ganzzahl, die die maximale Länge eines Dateinamens darstellt, den ein Zeichenarray speichern kann. Wenn die Implementierung keine Einschränkungen hat, sollte dieser Wert das empfohlene Maximum sein. |
| 7 | L_tmpnam Dieses Makro ist eine Ganzzahl, die die maximale Länge eines Zeichenarrays darstellt, das einen von der Funktion tmpnam erzeugten temporären Dateinamen speichern kann. |
| 8 | SEEK_CUR, SEEK_ENDundSEEK_SET Diese Makros werden infseek-Funktionen verwendet, um an verschiedenen Positionen innerhalb einer Datei zu positionieren. |
| 9 | TMP_MAX Dieses Makro ist die maximale Anzahl eindeutiger Dateinamen, die die Funktion tmpnam generieren kann. |
| 10 | stderr, stdinundstdout Diese Makros sind Zeiger auf den Typ FILE und entsprechen jeweils den Standardfehler-, Standardeingabe- und Standardausgabestreams. |
Bibliotheksfunktionen
Die folgenden Funktionen sind in der Header-Datei stdio.h definiert:
Um die Funktionen besser zu verstehen, studieren Sie sie in der folgenden Reihenfolge, da die in der ersten Funktion erstellte Datei in den nachfolgenden Funktionen verwendet wird.
| Laufende Nummer | Funktionen & Beschreibung |
|---|---|
| 1 | int fclose(FILE *stream) Schließt den Stream stream. Leert alle Puffer. |
| 2 | void clearerr(FILE *stream) Löscht die Dateiende- und Fehlerindikatoren für den angegebenen Stream stream. |
| 3 | int feof(FILE *stream) Testet den Dateiende-Indikator für den angegebenen Stream stream. |
| 4 | int ferror(FILE *stream) Testet den Fehlerindikator für den angegebenen Stream stream. |
| 5 | int fflush(FILE *stream) Leert den Ausgabepuffer des Streams stream. |
| 6 | int fgetpos(FILE *stream, fpos_t *pos) Ruft die aktuelle Dateiposition des Streams stream ab und schreibt sie nach pos. |
| 7 | FILE *fopen(const char *filename, const char *mode) Öffnet die Datei, auf die filename zeigt, mit dem angegebenen Modus mode. |
| 8 | size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) Liest Daten aus dem angegebenen Stream stream in das Array, auf das ptr zeigt. |
| 9 | FILE *freopen(const char *filename, const char *mode, FILE *stream) Ordnet dem gegebenen geöffneten Stream stream einen neuen Dateinamen filename zu und schließt dabei die alte Datei im Stream. |
| 10 | int fseek(FILE *stream, long int offset, int whence) Setzt die Dateiposition des Streams stream auf den gegebenen Offset offset, Parameteroffsetbedeutet von einem gegebenenwhencedie Anzahl der Bytes für die Positionssuche. |
| 11 | int fsetpos(FILE *stream, const fpos_t *pos) Setzt die Dateiposition des gegebenen Streams stream auf die angegebene Position. Der Parameterposist die von der Funktion fgetpos zurückgegebene Position. |
| 12 | long int ftell(FILE *stream) Gibt die aktuelle Dateiposition des gegebenen Streams stream zurück. |
| 13 | size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) Schreibt Daten aus dem Array, auf das ptr zeigt, in den gegebenen Stream stream. |
| 14 | int remove(const char *filename) Löscht den gegebenen Dateinamen filename, sodass nicht mehr darauf zugegriffen werden kann. |
| 15 | int rename(const char *old_filename, const char *new_filename) Ändert den Dateinamen, auf den old_filename zeigt, in new_filename. |
| 16 | void rewind(FILE *stream) Setzt die Dateiposition auf den Anfang der Datei des angegebenen Streams stream. |
| 17 | void setbuf(FILE *stream, char *buffer) Definiert, wie der Stream stream gepuffert werden soll. |
| 18 | int setvbuf(FILE *stream, char *buffer, int mode, size_t size) Eine weitere Funktion, die definiert, wie der Stream stream gepuffert werden soll. |
| 19 | FILE *tmpfile(void) Erstellt eine temporäre Datei im binären Aktualisierungsmodus (wb+). |
| 20 | char *tmpnam(char *str) Erzeugt und gibt einen gültigen temporären Dateinamen zurück, der zuvor nicht existierte. |
| 21 | int fprintf(FILE *stream, const char *format, ...) Sendet formatierte Ausgabe an den Stream stream. |
| 22 | int printf(const char *format, ...) Sendet formatierte Ausgabe an die Standardausgabe stdout. |
| 23 | int sprintf(char *str, const char *format, ...) Sendet formatierte Ausgabe an eine Zeichenkette. |
| 24 | int vfprintf(FILE *stream, const char *format, va_list arg) Sendet formatierte Ausgabe an den Stream stream unter Verwendung einer Argumentliste. |
| 25 | int vprintf(const char *format, va_list arg) Sendet formatierte Ausgabe an die Standardausgabe stdout unter Verwendung einer Argumentliste. |
| 26 | int vsprintf(char *str, const char *format, va_list arg) Sendet formatierte Ausgabe an eine Zeichenkette unter Verwendung einer Argumentliste. |
| 27 | int fscanf(FILE *stream, const char *format, ...) Liest formatierte Eingabe aus dem Stream stream. |
| 28 | int scanf(const char *format, ...) Liest formatierte Eingabe aus der Standardeingabe stdin. |
| 29 | int sscanf(const char *str, const char *format, ...) Liest formatierte Eingabe aus einer Zeichenkette. |
| 30 | int fgetc(FILE *stream) Ruft das nächste Zeichen (ein vorzeichenloses Zeichen) aus dem angegebenen Stream stream ab und rückt den Positionsanzeiger vor. |
| 31 | char *fgets(char *str, int n, FILE *stream) Liest eine Zeile aus dem angegebenen Stream stream und speichert sie in der Zeichenkette, auf die str zeigt. Wenn(n-1)Zeichen gelesen werden, oder wenn ein Zeilenumbruchzeichen gelesen wird, oder wenn das Dateiende erreicht wird, wird der Vorgang beendet, je nachdem, was zuerst eintritt. |
| 32 | int fputc(int char, FILE *stream) Schreibt das durch das Argument char angegebene Zeichen (ein vorzeichenloses Zeichen) in den angegebenen Stream stream und rückt den Positionsanzeiger vor. |
| 33 | int fputs(const char *str, FILE *stream) Schreibt die Zeichenkette in den angegebenen Stream stream, wobei das Nullzeichen ausgeschlossen wird. |
| 34 | int getc(FILE *stream) Ruft das nächste Zeichen (ein vorzeichenloses Zeichen) aus dem angegebenen Stream stream ab und rückt den Positionsanzeiger vor. |
| 35 | int getchar(void) Ruft ein Zeichen (ein vorzeichenloses Zeichen) von der Standardeingabe stdin ab. |
| 36 | char *gets(char *str) Liest eine Zeile von der Standardeingabe stdin und speichert sie in der Zeichenkette, auf die str zeigt. Sie stoppt, wenn ein Zeilenumbruchzeichen gelesen wird oder wenn das Dateiende erreicht ist, je nach Situation. |
| 37 | int putc(int char, FILE *stream) Schreibt das durch das Argument char angegebene Zeichen (ein vorzeichenloses Zeichen) in den angegebenen Stream stream und rückt den Positionsanzeiger vor. |
| 38 | int putchar(int char) Schreibt das durch das Argument char angegebene Zeichen (ein vorzeichenloses Zeichen) auf die Standardausgabe stdout. |
| 39 | int puts(const char *str) Schreibt eine Zeichenkette auf die Standardausgabe stdout, bis zum Nullzeichen, aber ohne es einzuschließen. An die Ausgabe wird ein Zeilenumbruchzeichen angehängt. |
| 40 | int ungetc(int char, FILE *stream) Schiebt das Zeichen char (ein vorzeichenloses Zeichen) zurück auf den angegebenen Stream stream, sodass es das nächste zu lesende Zeichen ist. |
| 41 | void perror(const char *str) Gibt eine beschreibende Fehlermeldung an die Standardfehlerausgabe stderr aus. Zuerst wird die Zeichenkette str ausgegeben, gefolgt von einem Doppelpunkt, dann einem Leerzeichen. |
| 42 | int snprintf(char *str, size_t size, const char *format, ...) Formatiert eine Zeichenkette in str. |
Beispiel
Im Folgenden sind einige Anwendungs<stdio.h>Beispiele für Funktionen in:
Öffnen und Schließen von Dateien:
Beispiel
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Fehler beim Öffnen der Datei");
return 1;
}
// Dateioperationen ausführen
fclose(file);
return 0;
}
Dateiinhalte lesen:
Beispiel
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Fehler beim Öffnen der Datei");
return 1;
}
char buffer[256];
while (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("%s", Puffer);
}
fclose(file);
return 0;
}
Beispiel
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
perror("Fehler beim Öffnen der Datei");
return 1;
}
fprintf(file, "Hello, World!\n");
fclose(file);
return 0;
}
Hinweise
- Nutzung
fopenNach dem Öffnen einer Datei sollten Sie unbedingt verwendenfcloseSchließt die Datei, um Dateiressourcenlecks zu vermeiden. - Nutzung
fgetsAchten Sie beim Lesen von Zeichenketten unbedingt auf die Größe des Puffers, um einen Pufferüberlauf zu vermeiden. - Nutzung
printf、scanfAchten Sie bei der Verwendung von Funktionen unbedingt auf die Korrektheit der Formatzeichenfolge, um undefiniertes Verhalten zu vermeiden.
Durch das Verstehen und Verwenden<stdio.h>Die bereitgestellten Funktionen erleichtern es, Datei- und Standard-Ein-/Ausgabeoperationen durchzuführen und robustere und flexiblere C-Programme zu schreiben.