Namespaces
Variants

fclose

From cppreference.net
< c ‎ | io
Definiert in Header <stdio.h>
int fclose ( FILE * stream ) ;

Schließt den angegebenen Dateistream. Alle nicht geschriebenen gepufferten Daten werden an das Betriebssystem übertragen. Alle nicht gelesenen 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 setbuf oder setvbuf allokierte Puffer, falls vorhanden, wird ebenfalls dissoziiert und freigegeben, falls automatische Allokation verwendet wurde.

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

Inhaltsverzeichnis

Parameter

stream - der zu schließende Dateistream

Rückgabewert

0 bei Erfolg, EOF andernfalls

Beispiel

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    const char* fname = "/tmp/unique_name.txt"; // or tmpnam(NULL);
    int is_ok = EXIT_FAILURE;
    FILE* fp = fopen(fname, "w+");
    if (!fp)
    {
        perror("File opening failed");
        return is_ok;
    }
    fputs("Hello, world!\n", fp);
    rewind(fp);
    int c; // note: int, not char, required to handle EOF
    while ((c = fgetc(fp)) != EOF) // standard C I/O file reading loop
        putchar(c);
    if (ferror(fp))
        puts("I/O error when reading");
    else if (feof(fp))
    {
        puts("End of file is reached successfully");
        is_ok = EXIT_SUCCESS;
    }
    fclose(fp);
    remove(fname);
    return is_ok;
}

Mögliche Ausgabe:

Hello, world!
End of file is reached successfully

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.21.5.1 Die fclose-Funktion (S.: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.21.5.1 Die fclose-Funktion (S.: TBD)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.21.5.1 Die fclose-Funktion (S: 304)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.19.5.1 Die fclose-Funktion (S: 270)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.9.5.1 Die fclose-Funktion

Siehe auch

öffnet eine Datei
(Funktion)
öffnet einen bestehenden Stream mit einem anderen Namen
(Funktion)