Sdílet prostřednictvím


freopen_s, _wfreopen_s

Znovu přiřadí ukazatel souboru.Tyto verze freopen, _wfreopen mít rozšíření zabezpečení popsaná v Funkce zabezpečení v CRT.

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

Parametry

  • [out] pFile
    Ukazatel na ukazatel souboru poskytované volání.

  • [in] path
    Cesta nového souboru.

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

  • [in] stream
    Ukazatel na strukturu FILE.

Vrácená hodnota

Každá z těchto funkcí vrací kód chyby.Pokud dojde k chybě, je původní soubor uzavřen.

Poznámky

freopen_s Funkce zavře soubor aktuálně přidružených k stream a znovu přiřadí stream do souboru určeného parametrem path._wfreopen_s je verze širokého znaku _freopen_s;  path a mode argumenty pro _wfreopen_s jsou řetězci širokého znaku._wfreopen_s a _freopen_s se jinak chovají stejně.

Pokud některý z pFile, path, mode, nebo stream jsou NULL, nebo -li path je prázdný řetězec, tyto funkce vyvolat obslužnou rutinu neplatný parametr, jak je popsáno v Ověření parametru.Pokud smí provádění pokračovat, tyto funkce nastaví errno na EINVAL a vrátí EINVAL.

Rutinní mapování obecného textu

Rutina TCHAR.H

_UNICODE & _MBCS není definováno

_MBCS definováno

_UNICODE definováno

_tfreopen_s

freopen_s

freopen_s

_wfreopen_s

freopen_sobvykle slouží k přesměrování dříve otevřených souborů stdin, stdout, a stderr k souborům, které zadal uživatel.Nový soubor spojený s stream se mode*,* který je znakový řetězec určující typ přístup k souboru, takto:

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

  • "w"
    Otevře prázdný soubor pro zápis.Pokud daný soubor existuje, jeho obsah je zničen.

  • "a"
    Otevře pro zápis na konci souboru (připojení) bez odstranění značky EOF před zápisem nových dat do souboru. nejprve vytvoří soubor, pokud již neexistuje.

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

  • "w+"
    Otevře prázdný soubor pro čtení i zápis.Pokud daný soubor existuje, jeho obsah je zničen.

  • "a+"
    Otevře pro čtení a přidávání; ke operace 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 již neexistuje.

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

Při otevření souboru s "a" nebo "a+" přístup k typu, všechny operace probíhají na konci souboru zapisovat.I když může být přemístí ukazatel souboru pomocí fseek nebo rewind, ukazatel souboru je vždy přesunuta zpět na konec souboru před libovolný zápis operace provádí.Proto nelze přepsat existující data.

Režim "a" neodstraní značku EOF před připojením k souboru.Po tom, co došlo k připojení, příkaz MS-DOS TYPE zobrazí pouze data do původní značky EOF, nikoliv data připojena k souboru.Režim "a+" odstraní značku EOF před připojením k souboru.Po připojení zobrazí příkaz MS-DOS TYPE všechna data v souboru.Pro soubor datového proudu, který je přerušen skrze značku EOF CTRL+Z je pro připojení vyžadován režim "a+".

Když "r+","w+", nebo "a+" je nastaven 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 vzad 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, chcete-li určit režim překladu pro nové řádky.

  • t
    Otevřít jako text (překlad) režimu; return–linefeed (CR-LF) kombinace přepravy jsou přeloženy do jeden nový řádek (LF) znaků na vstupu; Kombinace CR-LF na výstupu se přeložit znaky LF.CTRL + Z, je interpretován jako znak konce souboru na vstupu.V souborech otevřít 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 může způsobit přesun v rámci souboru fseek na konci souboru fungovat správně.t Je možnost rozšíření aplikace Microsoft, které by neměly být použity, kde je žádoucí přenositelnost ANSI.

  • b
    V binárním režimu (nepřeložený); nad překlady jsou potlačeny.

Pokud není uveden t nebo b v mode, je výchozí režim překladu definován pomocí globální proměnné _fmode.Pokud je t nebo b předponou argumentu, funkce selže a vrátí NULL.

Informace o textu a binární režimy, viz textu a binární režim I/O souboru.

Požadavky

Funkce

Požadované záhlaví

freopen_s

<stdio.h>

_wfreopen_s

<stdio.h> nebo <wchar.h>

Konzola není v aplikacích Windows Store podporována.Standardní datový proud popisovačů, které jsou spojeny s konzolou – stdin, stdout a stderr, musí být přesměrován před použitím funkcí jazyka C run-time je v aplikacích Windows Store.Další informace o kompatibilitě naleznete v tématu Kompatibilita.

Příklad

// crt_freopen_s.c
// 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 )
{
   errno_t err;
   // Reassign "stderr" to "freopen.out": 
   err = freopen_s( &stream, "freopen.out", "w", stderr );

   if( err != 0 )
      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

I/O proudu

freopen, _wfreopen

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

_open, _wopen

_setmode