Język C++
freopen
[funkcja] Zamyka, a następnie otwiera wskazany plik.Składnia
#include <cstdio>
FILE * fopen( const char * path, const char * mode, FILE * stream );
Argumenty
Zwracana wartość
Zwraca uchwyt przekazany do funkcji poprzez argument
stream w przypadku sukcesu. W przeciwnym wypadku funkcja zwraca wartość
NULL.
Opis szczegółowy
Funkcja zamyka strumień danych wskazany za pomocą trzeciego argumentu, a następnie otwiera plik o podanej nazwie w określonym trybie dostępu. Nazwę pliku określa się za pomocą pierwszego argumentu. Drugi argument określa natomiast tryb dostępu do pliku.
Uwaga! Wartość drugiego i trzeciego argumentu musi być poprawna i jednocześnie różna od NULL. Wartość pierwszego argumentu jest zależna od posiadanej implementacji standardowej biblioteki. Implementacja stosowana w kompilatorach MinGW dopuszcza wartość NULL jako pierwszy argument (co umożliwia zmianę trybu dostępu do pliku), natomiast biblioteki dostarczane wraz z kompilatorem Visual C++ wymagają, aby pierwszy argument był różny od NULL oraz nie był pustym łańcuchem znaków.
|
Tryby dostępu do pliku
Tryb binarny
Aby otworzyć plik w trybie binarnym, należy dopisać znak "b" w środku lub na końcu łańcucha, który opisuje tryb otwarcia pliku. Dopisanie znaku "b" na początku wspomnianego łańcucha znaków spowoduje, że otwarcie pliku zakończy się zawsze niepowodzeniem.
Tryb tekstowy
Standard C++ nie określa jasno, kiedy plik jest w trybie tekstowym, zatem cecha ta jest zależna od implementacji posiadanych bibliotek. Zazwyczaj plik jest otwierany w trybie tekstowym, gdy w łańcuchu znaków, który określa tryb
nie występuje litera "b". W przypadku bibliotek dostarczanych wraz z kompilatorem Visual C++, tryb tekstowy określa się za pomocą litery "t".
Przykład
#include <cstdio>
void dopiszZnak( FILE * pStrumien )
{
printf( "%s\n",( putc( '@', stderr ) == EOF ) ? "Niepowodzenie"
: "Zapis udany" );
}
int main()
{
dopiszZnak( stderr );
freopen( "plik1.txt", "w", stderr );
dopiszZnak( stderr );
freopen( "plik2.txt", "w", stderr );
dopiszZnak( stderr );
freopen( "nieistniejacy-katalog/zonk.txt", "w", stderr );
dopiszZnak( stderr );
fclose( stderr );
dopiszZnak( stderr );
return 0;
}
Możliwe standardowe wyjście programu:
@Zapis udany
Zapis udany
Zapis udany
Niepowodzenie
Niepowodzenie
Zagadnienia powiązane
fclose | Zamyka strumień danych. (funkcja) |
---|
fopen | Otwiera wskazany plik. (funkcja) |
---|
Linki zewnętrzne
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.