Condividi tramite


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

Vedere anche

Riferimenti

Flusso I/O

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

_open, _wopen

_setmode