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 NummerVariablen & Beschreibung
1size_t
Dies ist ein vorzeichenloser Ganzzahltyp, der das Ergebnis des Schlüsselwortssizeofist und die Größe eines Objekts angibt.
2FILE
Datei-Stream-Typ, ein Objekttyp, der zum Speichern von Datei-Stream-Informationen geeignet ist.
3fpos_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 NummerMakros & Beschreibung
1NULL
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.
3BUFSIZ
This macro is an integer that representssetbufdie von der Funktion verwendete Puffergröße darstellt.
4EOF
Dieses Makro ist eine negative Ganzzahl, die angibt, dass das Ende der Datei erreicht wurde.
5FOPEN_MAX
Dieses Makro ist eine Ganzzahl, die die Anzahl der Dateien darstellt, die das System gleichzeitig öffnen kann.
6FILENAME_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.
7L_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.
8SEEK_CUR, SEEK_ENDundSEEK_SET
Diese Makros werden infseek-Funktionen verwendet, um an verschiedenen Positionen innerhalb einer Datei zu positionieren.
9TMP_MAX
Dieses Makro ist die maximale Anzahl eindeutiger Dateinamen, die die Funktion tmpnam generieren kann.
10stderr, 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 NummerFunktionen & Beschreibung
1int fclose(FILE *stream)
Schließt den Stream stream. Leert alle Puffer.
2void clearerr(FILE *stream)
Löscht die Dateiende- und Fehlerindikatoren für den angegebenen Stream stream.
3int feof(FILE *stream)
Testet den Dateiende-Indikator für den angegebenen Stream stream.
4int ferror(FILE *stream)
Testet den Fehlerindikator für den angegebenen Stream stream.
5int fflush(FILE *stream)
Leert den Ausgabepuffer des Streams stream.
6int fgetpos(FILE *stream, fpos_t *pos)
Ruft die aktuelle Dateiposition des Streams stream ab und schreibt sie nach pos.
7FILE *fopen(const char *filename, const char *mode)
Öffnet die Datei, auf die filename zeigt, mit dem angegebenen Modus mode.
8size_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.
9FILE *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.
10int 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.
11int 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.
12long int ftell(FILE *stream)
Gibt die aktuelle Dateiposition des gegebenen Streams stream zurück.
13size_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.
14int remove(const char *filename)
Löscht den gegebenen Dateinamen filename, sodass nicht mehr darauf zugegriffen werden kann.
15int rename(const char *old_filename, const char *new_filename)
Ändert den Dateinamen, auf den old_filename zeigt, in new_filename.
16void rewind(FILE *stream)
Setzt die Dateiposition auf den Anfang der Datei des angegebenen Streams stream.
17void setbuf(FILE *stream, char *buffer)
Definiert, wie der Stream stream gepuffert werden soll.
18int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
Eine weitere Funktion, die definiert, wie der Stream stream gepuffert werden soll.
19FILE *tmpfile(void)
Erstellt eine temporäre Datei im binären Aktualisierungsmodus (wb+).
20char *tmpnam(char *str)
Erzeugt und gibt einen gültigen temporären Dateinamen zurück, der zuvor nicht existierte.
21int fprintf(FILE *stream, const char *format, ...)
Sendet formatierte Ausgabe an den Stream stream.
22int printf(const char *format, ...)
Sendet formatierte Ausgabe an die Standardausgabe stdout.
23int sprintf(char *str, const char *format, ...)
Sendet formatierte Ausgabe an eine Zeichenkette.
24int vfprintf(FILE *stream, const char *format, va_list arg)
Sendet formatierte Ausgabe an den Stream stream unter Verwendung einer Argumentliste.
25int vprintf(const char *format, va_list arg)
Sendet formatierte Ausgabe an die Standardausgabe stdout unter Verwendung einer Argumentliste.
26int vsprintf(char *str, const char *format, va_list arg)
Sendet formatierte Ausgabe an eine Zeichenkette unter Verwendung einer Argumentliste.
27int fscanf(FILE *stream, const char *format, ...)
Liest formatierte Eingabe aus dem Stream stream.
28int scanf(const char *format, ...)
Liest formatierte Eingabe aus der Standardeingabe stdin.
29int sscanf(const char *str, const char *format, ...)
Liest formatierte Eingabe aus einer Zeichenkette.
30int fgetc(FILE *stream)
Ruft das nächste Zeichen (ein vorzeichenloses Zeichen) aus dem angegebenen Stream stream ab und rückt den Positionsanzeiger vor.
31char *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.
32int 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.
33int fputs(const char *str, FILE *stream)
Schreibt die Zeichenkette in den angegebenen Stream stream, wobei das Nullzeichen ausgeschlossen wird.
34int getc(FILE *stream)
Ruft das nächste Zeichen (ein vorzeichenloses Zeichen) aus dem angegebenen Stream stream ab und rückt den Positionsanzeiger vor.
35int getchar(void)
Ruft ein Zeichen (ein vorzeichenloses Zeichen) von der Standardeingabe stdin ab.
36char *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.
37int 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.
38int putchar(int char)
Schreibt das durch das Argument char angegebene Zeichen (ein vorzeichenloses Zeichen) auf die Standardausgabe stdout.
39int 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.
40int 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.
41void 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.
42int 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

#include <stdio.h>

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

#include <stdio.h>

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;
}
Dateiinhalt schreiben:

Beispiel

#include <stdio.h>

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

  • NutzungfopenNach dem Öffnen einer Datei sollten Sie unbedingt verwendenfcloseSchließt die Datei, um Dateiressourcenlecks zu vermeiden.
  • NutzungfgetsAchten Sie beim Lesen von Zeichenketten unbedingt auf die Größe des Puffers, um einen Pufferüberlauf zu vermeiden.
  • Nutzungprintf、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.

Weitere Erweiterungen