Sdílet prostřednictvím


freopen _wfreopen

Znovu přiřaďte ukazatele souboru.Bezpečnější verze tyto funkce jsou k dispozici; see 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 
);

Parametry

  • path
    Cesta nového souboru.

  • mode
    Typ oprávněného přístupu.

  • stream
    Ukazatel na FILE struktury.

Vrácená hodnota

Každá z těchto funkcí vrací ukazatel na nově otevřeného souboru.Pokud dojde k chybě, původní soubor se zavře a vrátí NULL hodnotu ukazatele.Pokud path, mode, nebo stream je ukazatel s hodnotou null, nebo pokud filename je prázdný řetězec, tyto funkce vyvolat obslužnou rutinu neplatný parametr, jak je popsáno v Ověření parametrů.Pokud je povoleno zpracování, chcete-li pokračovat, tyto funkce set errno na EINVAL a vrátit se NULL.

Viz _doserrno, kód chyby, _sys_errlist a _sys_nerr Další informace o těchto a jiných kódy chyb.

Poznámky

Bezpečnější verze těchto funkcí neexistuje, viz freopen_s, _wfreopen_s.

freopen Funkce uzavře soubor aktuálně přidružené k stream a znovu přiřadí stream do souboru určeného parametrem path*.*_wfreopen je verzí širokého znaku _freopen; path a mode argumenty pro _wfreopen jsou řetězci širokého znaku._wfreopena _freopen jinak chovat identicky.

Mapování rutiny obecného textu

TCHAR.Byla zahájena rutina h

_UNICODE & _MBCS není definováno

_MBCS, definice

_UNICODE definována

_tfreopen

freopen

freopen

_wfreopen

freopenobvykle slouží k přesměrování souborů pre-opened stdin, stdout, a stderr k souborům, které jsou zadané uživatelem.Nový soubor spojený s stream se mode*,* který je řetězec znaků určující typ přístup k souboru, takto:

  • "r"
    Otevře pro čtení.Pokud soubor neexistuje nebo nemůže být nalezen freopen volání se nezdaří.

  • "w"
    Otevře prázdný soubor pro zápis.Je-li daný soubor existuje, jeho obsah jsou zničeny.

  • "a"
    Otevře se pro zápis na konci souboru (připojení), aniž byste odebrali značku EOF před zápisem nových dat do souboru; nejprve vytvoří soubor, pokud neexistuje.

  • "r+"
    Otevře pro čtení i zápis.(Soubor musí existovat.)

  • "w+"
    Otevře prázdný soubor pro čtení i zápis.Je-li daný soubor existuje, jeho obsah jsou zničeny.

  • "a+"
    Otevře pro čtení a přidávání; operace připojení zahrnuje odstranění značky EOF před nová data zapsána do souboru a značku EOF je obnoven po dokončení zápisu; nejprve vytvoří soubor, pokud neexistuje.

Použití "w" a "w+" typy opatrně, protože zničí existující soubory.

Při otevření souboru s "a" nebo "a+" přístupu k typu, všechny zapisovat operací se konají na konci souboru.Ačkoli může být přemístěn ukazatel souboru pomocí fseek nebo rewind, ukazatel souboru vždy přesunuta zpět do konce souboru před libovolné zápis operace provádí.Proto nelze přepsat existující data.

"a" Režimu nedojde k odebrání značky EOF před připojením k souboru.Poté, co došlo k připojení, příkaz systému MS-DOS TYPE zobrazí pouze data do původní značku EOF a ne všechna data přidána do souboru."a+" Režimu odebrat značku EOF před připojením k souboru.Po připojení, zobrazí příkaz systému MS-DOS zadejte všechna data v tomto souboru."a+" Režim je vyžadován pro přidávání soubor datového proudu, který je ukončen s značku EOF CTRL + Z.

Když "r+", "w+", nebo "a+" je určen typ přístupu, je povoleno čtení i zápis (soubor je označen jako otevřená "aktualizace").Však při přepínání mezi čtení a zápis, musí existovat podílející se fsetpos, fseek, nebo Převinout operace.Aktuální pozice lze určit pro fsetpos nebo fseek operace, v případě potřeby.Kromě výše uvedených hodnot, jeden z těchto znaků může být součástí mode řetězec zadat režim překladu pro nové řádky.

  • t
    Otevřít jako text (překlad) režimu; přeprava return–linefeed (CR-LF) kombinace jsou přeloženy do jeden nový řádek (LF) znaky na vstupu; Znaky LF jsou převedeny na kombinaci znaků CR-LF na výstupu.Navíc CTRL + Z, je interpretován jako znak konce souboru na vstupu.V souborech otevřen pro čtení nebo pro zápis a čtení s "a+", knihovna run-time kontroluje CTRL + Z na konci souboru a odstraní jej, pokud je to možné.Je důvodem, že pomocí fseek a ftell Chcete-li přesunout v rámci souboru může způsobit, že fseek se chovají nesprávně poblíž konce souboru.t Je možnost rozšíření společnosti Microsoft, které by neměly být používány, kde je žádoucí přenositelnost ANSI.

  • b
    V binárním režimu (nepřeložený); výše uvedené překlady jsou potlačena.

Pokud t nebo b není uveden v mode, globální proměnná je definována výchozí režim překladu _fmode.Pokud t nebo b je předponou argument, funkce se nezdaří a vrátí NULL.

Pro diskusi o textu a binární režim, viz textu a binární režim souboru v/v.

Požadavky

Function

Požadované záhlaví

freopen

<stdio.h>

_wfreopen

<stdio.h> nebo <wchar.h>

V konzole není podporována v Windows Store apps.Úchyty standardní datový proud přidružené konzoly, stdin, stdout, a stderr, musí být přesměrována před C run-time funkce lze využít v Windows Store apps.Další informace o kompatibilitě, viz Compatibility v úvodu.

Příklad

// 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" );
}
  

Ekvivalent v rozhraní .NET Framework

Viz také

Referenční dokumentace

Proud I/O

fclose _fcloseall

_fdopen _wfdopen

_fileno

fopen _wfopen

_open, _wopen

_setmode