freopen, _wfreopen
Posizionare il puntatore del file.Più versioni sicure di queste funzioni sono disponibili, vedere 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
);
Parametri
path
Percorso del file.mode
Tipo di accesso consentito.stream
Puntatore alla struttura FILE.
Valore restituito
Ognuna di queste funzioni restituisce un puntatore al file appena aperto.Se si verifica un errore, il file originale viene chiuso e la funzione restituisce un valore del puntatore di NULL.Se path, mode, o stream è un puntatore null, o se filename è una stringa vuota, queste funzioni richiamare il gestore non valido di parametro, come descritto in Convalida dei parametri.Se l'esecuzione può continuare, queste funzioni impostano errno a EINVAL e restituiscono NULL.
Vedere _doserrno, errno, _sys_errlist, e _sys_nerr per ulteriori informazioni su questi, e altri, codici di errore.
Note
Più versioni sicure di queste funzioni esistenti, vedere freopen_s, _wfreopen_s.
La funzione di freopen chiude il file attualmente associato a stream e riassegna stream nel file specificato da path*.*_wfreopen è una versione a caratteri estesi di _freopen; gli argomenti di mode e di path a _wfreopen sono stringhe di caratteri estesi._wfreopen e _freopen si comportano in modo identico in caso contrario.
Mapping di routine a Testo generico
TCHAR.H routine |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tfreopen |
freopen |
freopen |
_wfreopen |
freopen in genere utilizzato per reindirizzare i file precedentemente aperti stdin, stdoute stderr ai file specificati dall'utente.Il nuovo file associato a stream viene aperto con mode*,* ovvero una stringa di caratteri che specifica il tipo di accesso richiesta di file, come segue:
"r"
Verrà aperto per leggere.Se il file non esiste o non è definito, la chiamata di freopen non riesce."w"
Apre un file vuoto per scrivere.Se il file specificato esiste, il contenuto viene eliminato."a"
Verrà aperto per la scrittura alla fine del file aggiungere () senza rimuovere il marcatore di EOF prima di scrivere i dati nuovi al file; crea il file innanzitutto se non esiste."r+"
Viene aperto per la lettura e scrittura.(Il file deve esistere.)"w+"
Apre un file vuoto per la lettura e scrittura.Se il file specificato esiste, il contenuto viene eliminato."a+"
Verrà aperto per la lettura e aggiungere; l'operazione di spooling comporta la rimozione del marcatore di EOF prima che i nuovi dati vengono scritti nel file e il marcatore di EOF venga ripristinato dopo la scrittura è completa, crea il file innanzitutto se non esiste.
Utilizzare con attenzione i tipi di "w+" e di "w", ad esempio possibile eliminare i file esistenti.
Quando un file viene aperto al tipo di accesso di "a+" o di "a", tutte le operazioni di scrittura vengono eseguite alla fine del file.Sebbene il puntatore del file venga riposizionato utilizzando fseek o di rewind, il puntatore del file viene spostato sempre alla fine del file prima che qualsiasi operazione di scrittura sia eseguita.Pertanto, i dati esistenti non possono essere sovrascritti.
La modalità di "a" non rimuove il marcatore di EOF prima di aggiungere al file.Dopo avere aggiunto si verifica, il comando TIPO1 MS-DOS vengono visualizzati solo i dati del marcatore di EOF originale e non i dati associati al file.La modalità di "a+" rimuove il marcatore di EOF prima di aggiungere al file.Dopo avere aggiunto, il comando di TIPO1 MS-DOS mostra tutti i dati nel file.La modalità di "a+" è necessario per aggiungere a un file del flusso che termina con il marcatore di CTRL+Z EOF.
Quando "r+", "w+", o il tipo di accesso di "a+" è specificato, la lettura e la scrittura sono consentite (il file viene aperto per "l'aggiornamento").Tuttavia, quando si passa tra lettura e scrittura, deve essere fsetposcorrispondente, fseek, o un'operazione di rewind.La posizione corrente può essere specificata per l'operazione di fseek o di fsetpos, se desiderata.Oltre ai valori in precedenza, uno dei seguenti caratteri può essere incluso nella stringa di mode per specificare la modalità di traduzione per le nuove righe.
t
Aprire la modalità di testo (tradotto); combinazioni di ritorno a capo-avanzamento shopping (CR-LF) vengono convertite in singoli caratteri di (LF) di avanzamento riga in input; I caratteri di LF vengono tradotti alle combinazioni di CR-LF di output.Inoltre, CTRL+Z viene interpretato come carattere di fine file di input.In aprire file per la lettura o la scrittura e la lettura da "a+", la libreria di runtime di un CTRL+Z alla fine del file e la rimozione, se possibile.Questa operazione viene eseguita perché utilizzando fseek e ftell per spostarsi all'interno di un file può causare fseek a comporta in modo errato alla fine del file.L'opzione di t è un'estensione Microsoft che non deve essere utilizzata in cui la portabilità ANSI viene desiderata.b
Aprire in modalità (non tradotta binaria); le conversioni sopra eliminati.
Se t o b non è modefornito in, la modalità di traduzione predefinita definita la variabile globale _fmode.Se t o b è provvisto all'argomento, la funzione ha esito negativo e restituisce NULL.
Per informazioni sulle modalità del binario e testo, vedere La modalità binario e testo consente l'i/o.
Requisiti
Funzione |
Intestazione obbligatoria |
---|---|
freopen |
<stdio.h> |
_wfreopen |
<stdio.h> o <wchar.h> |
La console non è supportata nelle applicazioni di Windows Store.L'handle standard del flusso associate alla console, stdin, stdoute stderr, devono essere reindirizzati prima di funzioni di runtime del linguaggio C possono essere utilizzate nelle applicazioni di Windows Store.Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
Esempio
// 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" );
}
Equivalente .NET Framework
System::IO::FileStream::FileStream