Namespaces
Variants

std:: fclose

From cppreference.net
< cpp ‎ | io ‎ | c
Definiert im Header <cstdio>
int fclose ( std:: FILE * stream ) ;

Schließt den angegebenen Dateistream und schreibt alle ungeschriebenen Daten aus stream 's Puffer auf das zugehörige Ausgabegerät. Alle ungelesenen gepufferten Daten werden verworfen.

Unabhängig davon, ob der Vorgang erfolgreich ist oder nicht, ist der Stream nicht mehr mit einer Datei assoziiert, und der durch std::setbuf oder std::setvbuf allokierte Puffer, falls vorhanden, wird ebenfalls dissoziiert und deallokiert, falls automatische Allokierung verwendet wurde.

Wenn Daten auf ein Ausgabegerät geschrieben werden, stellt die Rückkehr von std::fclose einen beobachtbaren Kontrollpunkt her.

(since C++26)

Das Verhalten ist undefiniert, wenn der Wert des Zeigers stream nach dem Rückkehr von std::fclose verwendet wird.

Inhaltsverzeichnis

Parameter

stream - der zu schließende Dateistrom

Rückgabewert

0 bei Erfolg, EOF andernfalls.

Beispiel

#include <cstdio>
#include <cstdlib>
int main()
{
    int is_ok = EXIT_FAILURE;
    FILE* fp = std::fopen("/tmp/test.txt", "w+");
    if (!fp)
    {
        std::perror("File opening failed");
        return is_ok;
    }
    int c; // Note: int, not char, required to handle EOF
    while ((c = std::fgetc(fp)) != EOF) // Standard C I/O file reading loop
        std::putchar(c);
    if (std::ferror(fp))
        std::puts("I/O error when reading");
    else if (std::feof(fp))
    {
        std::puts("End of file reached successfully");
        is_ok = EXIT_SUCCESS;
    }
    std::fclose(fp);
    return is_ok;
}

Ausgabe:

End of file reached successfully

Siehe auch

öffnet eine Datei
(Funktion)
öffnet einen bestehenden Stream mit einem anderen Namen
(Funktion)
leert den Put-Bereich-Puffer und schließt die zugehörige Datei
(öffentliche Elementfunktion von std::basic_filebuf<CharT,Traits> )
C-Dokumentation für fclose