freopen, _wfreopen

Weisen Sie einen Dateizeiger neu zu.Sicherere Versionen dieser Funktionen sind verfügbar; finden Sie unter freopen_s, _wfreopen_s.

FILE *freopen( const char *path, const char *mode, FILE *stream ); FILE *_wfreopen( const wchar_t *path, const wchar_t *mode, FILE *stream );

Parameter

  • path
    Pfad der neuen Datei.

  • mode
    Typ des Zugriffs zulässig.

  • stream
    Zeiger auf FILE-Struktur.

Rückgabewert

Jede dieser Funktionen gibt einen Zeiger auf die neu geöffneten Datei zurück.Wenn ein Fehler auftritt, wird die ursprüngliche Datei und die Funktion einen NULL Zeigerwert geschlossen.Wenn path, mode oder stream ein NULL-Zeiger ist oder wenn filename eine leere Zeichenfolge ist, rufen diese Funktionen den ungültigen Parameterhandler auf, wie in Parametervalidierung beschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, legen diese Funktionen errno auf EINVAL fest und geben NULL zurück.

Siehe _doserrno, errno, _sys_errlist und _sys_nerr weitere Informationen zu diesen und anderen, Fehlercodes.

Hinweise

Sicherere Versionen dieser Funktionen vorhanden sind, finden freopen_s, _wfreopen_s.

Die freopen-Funktion enthält die Datei, die gerade stream zugeordnet ist und weist stream zur Datei erneut zu, die von path angegeben wird ._wfreopen ist eine Breitzeichen-Version von _freopen; die path und mode-Argumente zu _wfreopen sind Breitzeichen-Zeichenfolgen._wfreopen und _freopen verhalten sich andernfalls identisch.

Zuordnung generische Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert.

_MBCS definiert

_UNICODE definiert

_tfreopen

freopen

freopen

_wfreopen

freopen wird normalerweise verwendet, um die vor-geöffneten Dateien stdin, stdout und stderr auf Dateien umzuleiten, die vom Benutzer angegeben werden.Die neue Datei, die mit stream zugeordnet ist, ist mit mode*,* die eine Zeichenfolge ist, die den Typ des Zugriffs angefordert für die Datei angibt, wie folgt geöffnet:

  • "r"
    Der wird zum Lesen.Wenn die Datei nicht vorhanden ist oder nicht gefunden werden kann, schlägt der Aufruf freopen aus.

  • "w"
    Öffnet eine leere Datei zum Schreiben.Wenn die angegebene Datei vorhanden ist, wird der Inhalt zerstört.

  • "a"
    Vor dem Schreiben von neuen Daten geöffnet zum Schreiben am Ende der Datei (Anfügen) ohne den EOF-Marker, die Datei zu entfernen; erstellt die Datei zuerst, wenn sie nicht vorhanden ist.

  • "r+"
    Der wird für das Lesen und Schreiben.(Die Datei muss vorhanden sein.)

  • "w+"
    Öffnet eine leere Datei für das Lesen und Schreiben.Wenn die angegebene Datei vorhanden ist, wird der Inhalt zerstört.

  • "a+"
    Der wird zum Lesen und das Anfügen; der anfügende Vorgang umfasst das Entfernen des EOF-Markers, bevor neue Daten in die Datei geschrieben werden und der EOF-Marker wiederhergestellt wird, nachdem das Schreiben vollständig ist, erstellt die Datei zuerst, wenn sie nicht vorhanden ist.

Verwenden Sie die "w" und "w+"-Typen sorgfältig, wie sie vorhandene Dateien zerstören können.

Wenn eine Datei mit dem "a" oder "a+" Zugriffstyp geöffnet ist, werden alle Schreibvorgänge am Ende der Datei statt.Obwohl der Dateizeiger mithilfe fseek oder rewind neu angeordnet werden kann, wird der Dateizeiger immer wieder am Ende der Datei verschoben, bevor ein Schreibvorgang durchgeführt wird.Daher können vorhandene Daten nicht überschrieben werden.

Der "a" Modus entfernt den EOF-Marker nicht, bevor er zur Datei angefügt.Nach dem Hinzufügen, aufgetreten ist, zeigt der MS-DOS TYPbefehl nur Daten bis auf die Markierung der Vorlage EOF und keine Daten, die an die Datei angefügt werden.Der "a+" Modus entfernt den EOF-Marker, bevor er zur Datei angefügt.Nach dem angefügt hat zeigt der MS-DOS TYPbefehl alle Daten in der Datei an.Der "a+" Modus ist für das Anfügen an eine Streamdatei erforderlich, die mit dem Markierung STRG+Zs EOF beendet wird.

Wenn "r+", "w+" oder "a+" Zugriffstyp, angegeben wird, wird das Lesen und Schreiben zulässt (die Datei soll für "Update" geöffnet).Wenn Sie jedoch zwischen Lesen und Schreiben wechseln, es dazwischenliegendes fsetpos, fseek oder Rückspulen Vorgang geben müssen.Die aktuelle Position kann für den fsetpos oder fseek Vorgang angegeben werden, wenn dies erforderlich ist.Zusätzlich zu den oben aufgeführten Werten wird möglicherweise eine der folgenden Zeichen in der Zeichenfolge mode enthalten, um den Übersetzungsmodus für neue Zeilen anzugeben.

  • t
    Öffnen Sie im Modus des Texts (übersetzt); Kombinationen von Wagenrücklauf/Zeilenvorschubs (CR-LF) werden in einzelne Zeichen des Zeilenvorschubs (Zeilenvorschub) auf Eingabe übersetzt; Zeilenvorschubzeichen werden zu CR-LF Kombinationen auf Ausgabe übersetzt.Außerdem STRG+Z wird als Dateiendezeichen auf Eingabe interpretiert.In den Dateien, die zum Lesen oder zum Schreiben und Lesen mit "a+" geöffnet sind, entfernt die Laufzeitbibliotheksüberprüfungen für STRG+Z am Ende der Datei und sie, sofern möglich.Dies geschieht, da die Anwendung möglicherweise von fseek und von ftell, sich innerhalb einer Datei zu navigieren fseek bewirkt, dass sich neben dem Ende der Datei nicht ordnungsgemäß verhält.Die Option t ist eine Microsoft-Erweiterung, die nicht verwendet werden sollte, wo ANSI-Portabilität erforderlich ist.

  • b
    Öffnen Sie im binären (unübersetzten) Modus; die oben genannten Übersetzungen werden unterdrückt.

Wenn t oder b nicht in mode angegeben ist, wird der Standardwert Übersetzungsmodus durch die globale Variable _fmode definiert.Wenn t oder b das Argument vorangestellt wird, lässt die Funktion und gibt NULL zurück.

Eine Erläuterung Text- und Binärdateimodi, finden Sie unter Text- Binärdatei-Modus Datei E/A.

Anforderungen

Funktion

Erforderlicher Header

freopen

<stdio.h>

_wfreopen

<stdio.h> oder <wchar.h>

Die Konsole wird nicht in Windows Store-App unterstützt.Die Standardstreamhandles, die mit der Konsole, stdin, stdout und stderr zugeordnet werden, müssen umgeleitet werden, bevor sie C-Laufzeitfunktionen in Windows Store-App verwenden können.So zusätzlicher Kompatibilitätsinformation finden Sie unter Kompatibilität in der Einführung.

Beispiel

// crt_freopen.c
// compile with: /W3
// This program reassigns stderr to the file
// named FREOPEN.OUT and writes a line to that file.
#include <stdio.h>
#include <stdlib.h>

FILE *stream;

int main( void )
{
   // Reassign "stderr" to "freopen.out": 
   stream = freopen( "freopen.out", "w", stderr ); // C4996
   // Note: freopen is deprecated; consider using freopen_s instead

   if( stream == NULL )
      fprintf( stdout, "error on freopen\n" );
   else
   {
      fprintf( stdout, "successfully reassigned\n" ); fflush( stdout );
      fprintf( stream, "This will go to the file 'freopen.out'\n" );
      fclose( stream );
   }
   system( "type freopen.out" );
}
  

.NET Framework-Entsprechung

Siehe auch

Referenz

Stream E/A

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

_open, _wopen

_setmode