Namensräume
Varianten
Aktionen

std::fopen

Von cppreference.com
< cpp‎ | io‎ | c
 
 
 
C-Style I/O
Typen und Objekte
Funktionen
Datei-Zugriff
Direkte Ein-/Ausgabe
Unformatierte Ein-/Ausgabe
Formatierte Eingabe
(C++11)(C++11)(C++11)    
(C++11)(C++11)(C++11)    
 
Definiert in Header <cstdio>
std::FILE* fopen( const char* filename, const char* mode );

Öffnet eine Datei, die durch filename angegeben ist, und gibt einen Dateistream zurück, der mit dieser Datei verbunden ist. mode wird zur Bestimmung des Dateizugriffsmodus verwendet.

Inhalt

[bearbeiten] Parameter

filename - Dateiname, dem der Dateistream zugeordnet werden soll
mode - nullterminierte Zeichenkette, die den Dateizugriffsmodus bestimmt

[bearbeiten] Datei Zugriffsmodi

Datei-Zugriff
Modus-String
Bedeutung Erklärung Aktion, wenn Datei
bereits existiert
Aktion, wenn Datei
nicht existiert
"r" read Datei zum Lesen öffnen lesen ab Anfang gibt NULL zurück und setzt den Fehler
"w" schreiben Datei zum Schreiben erstellen Inhalt löschen neu erstellen
"a" append An eine Datei anhängen Ende schreiben neu erstellen
"r+" erweitertes Lesen Datei zum Lesen/Schreiben öffnen lesen ab Anfang gibt NULL zurück und setzt den Fehler
"w+" erweitertes Schreiben Datei zum Lesen/Schreiben erstellen Inhalt löschen neu erstellen
"a+" erweitertes Anhängen Datei zum Lesen/Schreiben öffnen Ende schreiben neu erstellen
Das Flag für den Dateizugriffsmodus "b" kann optional angegeben werden, um eine Datei im Binärmodus zu öffnen. Dieses Flag hat keine Auswirkungen auf POSIX-Systemen, aber unter Windows deaktiviert es beispielsweise die spezielle Behandlung von '\n' und '\x1A'.
Bei Anhänge-Dateizugriffsmodi werden Daten am Ende der Datei geschrieben, unabhängig von der aktuellen Position des Dateipositionsindikators.
Das Flag für den Dateizugriffsmodus "x" kann optional an die Spezifizierer "w" oder "w+" angehängt werden. Dieses Flag bewirkt, dass die Funktion fehlschlägt, wenn die Datei existiert, anstatt sie zu überschreiben. (C++17)
Das Verhalten ist undefiniert, wenn der Modus keiner der oben aufgeführten Strings ist. Einige Implementierungen definieren zusätzliche unterstützte Modi (z. B. Windows).

[bearbeiten] Rückgabewert

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

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

[bearbeiten] Hinweise

Das Format von filename ist implementierungsabhängig und bezieht sich nicht unbedingt auf eine Datei (z. B. kann es die Konsole oder ein anderes über die Dateisystem-API zugängliches Gerät sein). Auf Plattformen, die sie unterstützen, kann filename absolute oder relative Dateipfade enthalten.

Für portablen Verzeichnis- und Dateinamen siehe C++ Dateisystembibliothek oder boost.filesystem.

[bearbeiten] 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

[bearbeiten] Siehe auch

schließt eine Datei
(function) [bearbeiten]
synchronisiert einen Ausgabestream mit der tatsächlichen Datei
(function) [bearbeiten]
öffnet einen existierenden Stream mit einem anderen Namen
(function) [bearbeiten]
C-Dokumentation für fopen