Udostępnij za pośrednictwem


freopen_s, _wfreopen_s

Ponowne przypisywanie pliku (EOF).Są to wersje freopen, _wfreopen z ulepszeń zabezpieczeń, zgodnie z opisem w Funkcje zabezpieczeń w 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

  • [Brak]pFile
    Wskaźnik do wskaźnika pliku dostarczanych przez wywołanie.

  • [in]path
    Ścieżka do nowego pliku.

  • [in]mode
    Typ dostępu zezwala.

  • [in]stream
    Wskaźnik, aby FILE struktury.

Wartość zwracana

Każda z tych funkcji zwraca kod błędu.Jeśli wystąpi błąd, oryginalny plik jest zamknięty.

Uwagi

freopen_s Funkcja zamyka plik aktualnie skojarzonych z stream i ponownie przypisuje stream w pliku określonym przez path._wfreopen_s jest wersją szerokich znaków _freopen_s; path i mode argumentów do _wfreopen_s są ciągami szerokich znaków._wfreopen_si _freopen_s zachowują się identycznie inaczej.

Jeśli któryś z pFile, path, mode, lub stream są NULL, lub jeśli path jest ciągiem pustym tych funkcji WYWOŁAJ obsługi przez nieprawidłowy parametr, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, ustaw te funkcje errno do EINVAL i powrót EINVAL.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rozpoczęto wykonywanie procedury h

_UNICODE & _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tfreopen_s

freopen_s

freopen_s

_wfreopen_s

freopen_sZazwyczaj jest używany do przekierowania plików pre-opened stdin, stdout, i stderr do plików określonych przez użytkownika.Nowy plik skojarzony z stream z mode*,* który to ciąg znaków określający typ dostępu zażądał pliku, na następujący:

  • "r"
    Zostanie otwarty do odczytu.Jeśli plik nie istnieje lub nie można znaleźć, freopen_s wywołanie kończy się niepowodzeniem.

  • "w"
    Otwiera pusty plik do zapisu.Jeśli dany plik istnieje, jego zawartość są niszczone.

  • "a"
    Zostanie otwarty do zapisu na końcu pliku (dołączanie), bez usuwania znacznik EOF przed zapisaniem nowych danych do pliku. Tworzy plik po raz pierwszy, jeśli nie istnieje.

  • "r+"
    Otwiera zarówno Odczyt i zapis.(Plik musi istnieć.)

  • "w+"
    Otwiera pusty plik do zarówno odczytu i zapisu.Jeśli dany plik istnieje, jego zawartość są niszczone.

  • "a+"
    Zostanie otwarty do odczytu i dołączanie; dołączając operacja obejmuje usunięcie znacznik EOF, zanim nowe dane są zapisywane do pliku i znacznik EOF zostanie przywrócona po zakończeniu pisania; Tworzy plik po raz pierwszy, jeśli nie istnieje.

Użycie "w" i "w+" typy ostrożnie, ponieważ mogą zniszczyć istniejących plików.

Przy otwieraniu pliku z "a" lub "a+" dostęp typu zapis wszystkich operacji odbędzie się na końcu pliku.Chociaż wskaźnik pliku może być przeniesiony za pomocą fseek lub rewind, wskaźnik pliku jest zawsze przenoszony z powrotem na końcu pliku zanim pisać jedną czynność jest przeprowadzana.W ten sposób nie można zastąpić istniejące dane.

"a" Trybu nie powoduje usunięcia znacznik EOF zanim dołączy do pliku.Po wystąpieniu dołączenie polecenia systemu MS-DOS TYPE pokazuje tylko dane do oryginalnego znacznik EOF i nie wszystkie dane dołączane do pliku."a+" Tryb Usuń znacznik EOF, zanim dołączy do pliku.Po dołączanie, polecenia MS-DOS TYPE pokazuje wszystkie dane w pliku."a+" Tryb jest wymagany dla dołączania do pliku strumienia, który jest zakończony ze znacznikiem EOF CTRL + Z.

Gdy "r+","w+", lub "a+" jest określony typ dostępu, zarówno do czytania i pisania są dozwolone (plik mówi się, że otwarty do "aktualizacja"). Jednak podczas przełączania między odczytu i zapisu, musi istnieć interwencji fsetpos, fseek, lub do tyłu operacji.Bieżąca pozycja mogą być określone dla fsetpos lub fseek operacji, jeśli to konieczne.Oprócz powyższych wartości, jeden z następujących znaków może być zawarty w mode ciąg, aby określić tryb translacji dla nowych linii.

  • t
    Otwórz w tekście (przetłumaczone) tryb; karetki ze zmianą wiersza (CR-LF) kombinacje są tłumaczone na znaki pojedynczy znak wysuwu wiersza (LF) na wejściu; Znaki wysuwu wiersza są tłumaczone na CR-LF kombinacji na wyjściu.Ponadto CTRL + Z jest interpretowana jako znak końca pliku na wejściu.W plikach otwarty do odczytu lub do zapisywania i odczytywania z "a+", biblioteka uruchomieniowa sprawdza kombinację klawiszy CTRL + Z na końcu pliku i usuwa go, jeśli to możliwe.Odbywa się, ponieważ korzysta z fseek i ftell w pliku może spowodować fseek do jego niewłaściwe działanie pod koniec pliku.t Opcja to rozszerzenie Microsoft, które nie powinny być używane gdzie przenoszenia ANSI jest pożądane.

  • b
    Otwórz w trybie binarnym (niezrozumiały); Powyższe tłumaczenia będą pomijane.

Jeśli t lub b nie została podana w mode, domyślnie tryb konwersji jest definicją zmiennej globalnej _fmode.Jeśli t lub b jest poprzedzona argument, funkcja kończy się niepowodzeniem i zwraca NULL.

Omówienie tekstu i trybów binarnych, zobacz tekstu i binarny tryb We/Wy pliku.

Wymagania

Funkcja

Wymaganego nagłówka

freopen_s

<stdio.h>

_wfreopen_s

<stdio.h> lub <wchar.h>

Konsola nie jest obsługiwana w Windows Store aplikacji.Związanych z konsolą, dojścia do strumienia standard stdin, stdout, i stderr, muszą być przeniesione, aby funkcje uruchomieniowej C mogą być użyte w Windows Store aplikacji.Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Przykład

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

Odpowiednik w programie .NET Framework

Zobacz też

Informacje

Strumień we/wy

freopen, _wfreopen

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

_open, _wopen

_setmode