Udostępnij za pośrednictwem


freopen, _wfreopen

Ponowne przypisywanie pliku (EOF).Bezpieczniejsze wersje te funkcje są dostępne; 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
    Ścieżka do nowego pliku.

  • mode
    Typ dostępu zezwala.

  • stream
    Wskaźnik, aby FILE struktury.

Wartość zwracana

Każda z tych funkcji zwraca wskaźnik do nowo otwarty plik.Jeśli wystąpi błąd, oryginalny plik jest zamykany, a funkcja zwróci NULL wartość wskaźnika.Jeśli path, mode, lub stream jest pusty wskaźnik, lub jeśli filename 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 NULL.

Zobacz _doserrno, errno, _sys_errlist i _sys_nerr więcej informacji na temat tych i innych kodów błędów.

Uwagi

Bezpieczniejsze wersjach tych funkcji istnieje, zobacz freopen_s, _wfreopen_s.

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

Tekst rodzajowy rutynowych mapowania

TCHAR.Rozpoczęto wykonywanie procedury h

_UNICODE & _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tfreopen

freopen

freopen

_wfreopen

freopenZazwyczaj 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 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

<stdio.h>

_wfreopen

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

Odpowiednik w programie .NET Framework

Zobacz też

Informacje

Strumień we/wy

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

_open, _wopen

_setmode