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
System::IO::FILESTREAM::FILESTREAM