Namespaces
Variants

std:: fopen

From cppreference.net
< cpp ‎ | io ‎ | c
Definiert in Header <cstdio>
std:: FILE * fopen ( const char * filename, const char * mode ) ;

Öffnet eine Datei, die durch filename angegeben wird, und gibt einen Dateistrom zurück, der dieser Datei zugeordnet ist. mode wird verwendet, um den Dateizugriffsmodus zu bestimmen.

Inhaltsverzeichnis

Parameter

filename - Dateiname, der dem Dateistrom zugeordnet werden soll
mode - Null-terminierte Zeichenkette, die den Dateizugriffsmodus bestimmt

Dateizugriffsflags

Dateizugriffsmodus-String
Bedeutung Erklärung Aktion wenn Datei
bereits existiert
Aktion wenn Datei
nicht existiert
"r" read Datei zum Lesen öffnen Lesen ab Beginn Rückgabe von NULL und Fehler setzen
"w" write Datei zum Schreiben erstellen Inhalt zerstören Neue Datei erstellen
"a" append An Datei anhängen Schreiben am Ende Neue Datei erstellen
"r+" read extended Datei zum Lesen/Schreiben öffnen Lesen ab Beginn Rückgabe von NULL und Fehler setzen
"w+" write extended Datei zum Lesen/Schreiben erstellen Inhalt zerstören Neue Datei erstellen
"a+" append extended Datei zum Lesen/Schreiben öffnen Schreiben am Ende Neue Datei erstellen
Dateizugriffsmodus-Flag "b" kann optional angegeben werden, um eine Datei im Binärmodus zu öffnen. Dieses Flag hat keine Auswirkung auf POSIX-Systemen, aber unter Windows deaktiviert es beispielsweise die spezielle Behandlung von ' \n ' und ' \x1A ' .
Bei den Anhänge-Zugriffsmodi werden Daten unabhängig von der aktuellen Position des Dateipositionsindikators am Ende der Datei geschrieben.
Dateizugriffsmodus-Flag "x" kann optional an "w" oder "w+" angehängt werden. Dieses Flag erzwingt, dass die Funktion fehlschlägt, wenn die Datei existiert, anstatt sie zu überschreiben. (C++17)
Das Verhalten ist undefiniert, wenn der Modus nicht einer der oben aufgeführten Strings ist. Einige Implementierungen definieren zusätzlich unterstützte Modi (z.B. Windows ).

Rückgabewert

Bei Erfolg wird ein Zeiger auf das Objekt zurückgegeben, das den geöffneten Dateistrom steuert, wobei sowohl das eof- als auch das error-Bit gelöscht sind. Der Strom ist vollständig gepuffert, es sei denn, filename bezieht sich auf ein interaktives Gerät.

Bei einem Fehler wird ein Nullzeiger zurückgegeben. POSIX erfordert , dass in diesem Fall errno gesetzt wird.

Hinweise

Das Format von filename ist implementierungsdefiniert und bezieht sich nicht notwendigerweise auf eine Datei (z.B. kann es die Konsole oder ein anderes über die Dateisystem-API zugängliches Gerät sein). Auf Plattformen, die diese unterstützen, filename kann einen absoluten oder relativen Dateisystempfad enthalten.

Für portable Verzeichnis- und Dateibenennung, siehe C++ filesystem library oder boost.filesystem .

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

schließt eine Datei
(Funktion)
synchronisiert einen Ausgabestrom mit der tatsächlichen Datei
(Funktion)
öffnet einen bestehenden Stream mit einem anderen Namen
(Funktion)