_fsopen, _wfsopen
Apre un flusso alla condivisione di file.
FILE *_fsopen(
const char *filename,
const char *mode,
int shflag
);
FILE *_wfsopen(
const wchar_t *filename,
const wchar_t *mode,
int shflag
);
Parametri
filename
Nome del file da aprire.mode
Tipo di valido di accesso.shflag
Tipo di condividere consentito.
Valore restituito
Ognuna di queste funzioni restituisce un puntatore al flusso.un valore di puntatore null indica un errore.Se filename o mode è NULL o una stringa vuota, queste funzioni richiamare il gestore non valido di parametro, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, queste funzioni NULL di ritorno e errno stabilito a EINVAL.
Per ulteriori informazioni su questi e altri codici di errore, vedere _doserrno, errno, _sys_errlist e _sys_nerr.
Note
La funzione di _fsopen apre il file specificato da filename come flusso e prepara il file per lettura condivisa successiva o scrittura, come definito dalla modalità e dagli argomenti di shflag ._wfsopen è una versione a caratteri estesi di _fsopen; gli argomenti di mode e di filename a _wfsopen sono stringhe di caratteri estesi._wfsopen e _fsopen si comportano in modo identico in caso contrario.
La stringa di caratteri mode specifica il tipo di accesso richiesta di file, come illustrato nella tabella seguente.
Termine |
Definizione |
---|---|
"r" |
Verrà aperto per leggere.Se il file non esiste o non è possibile trovare, la chiamata di _fsopen ha esito negativo. |
"w" |
Apre un file vuoto per la scrittura.Se il file specificato esiste, il contenuto viene eliminato. |
"a" |
Verrà aperto per la scrittura alla fine del file (accodare); 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; crea il file innanzitutto se non esiste. |
Utilizzare con attenzione i tipi di "w+" e di "w" , ad esempio possono eliminare i file esistenti.
Quando un file viene aperto con il tipo di accesso di "a+" o di "a" , tutte le operazioni di scrittura si verificano alla fine del file.Il puntatore del file può essere riposizionato utilizzando fseek o di rewind, ma viene spostato sempre alla fine del file prima che qualsiasi operazione di scrittura sia eseguita.Pertanto, i dati esistenti non possono essere sovrascritti.Quando "r+", "w+", o il tipo di accesso di "a+" viene specificato, sia la lettura e la scrittura sono consentite (il file viene aperto per l'aggiornamento).Quando tuttavia si passano tra la lettura e la scrittura, deve essere fsetposcorrispondente, fseek, o 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 in mode per specificare la modalità di traduzione per le nuove righe e per la gestione dei file.
Termine |
Definizione |
---|---|
t |
Aprire un file in modalità di testo (tradotto).In questa modalità, i miscugli di un feed di ritorno-linea shopping (CR-LF) vengono convertiti in una singola riga è alimenta (LF) l'input e i caratteri di LF vengono convertiti alle combinazioni di CR-LF in output.Inoltre, CTRL+Z viene interpretato come carattere di fine file di input.In aprire file per la lettura o la lettura/scrittura, i controlli di _fsopen per 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 che termina con un CTRL+Z può accadere che fseek a comportarsi in modo errato alla fine del file. |
b |
Aprire un file in modalità (non tradotta) binaria; le conversioni in precedenza vengono eliminati. |
S |
Specifica che memorizza nella cache è ottimizzato per, ma non limitato a, un accesso sequenziale dal disco. |
R |
Specifica che memorizza nella cache è ottimizzato per, ma non limitato a, accesso casuale dal disco. |
T |
specifica un file come temporaneo.Se possibile, non viene scaricata su disco. |
D |
specifica un file come temporaneo.Viene eliminato quando l'ultimo puntatore del file viene chiuso. |
Se t o b non è modefornito in, la modalità di conversione definita dalla variabile _fmodedi impostazione predefinita-modalità.Se t o b è preceduta l ' argomento, la funzione ha esito negativo e restituisce NULL.Per informazioni sulle modalità del binario e del testo, vedere La modalità del binario di testo e archivia I/O.
L'argomento shflag è un'espressione costante la quantità delle costanti manifesto, definito in Share.h.
Termine |
Definizione |
---|---|
_SH_COMPAT |
Imposta la modalità di compatibilità per le applicazioni a 16 bit. |
_SH_DENYNO |
Autorizzazioni di lettura e accesso in scrittura. |
_SH_DENYRD |
Nega l'accesso in lettura al file. |
_SH_DENYRW |
Nega accesso in lettura e scrittura al file. |
_SH_DENYWR |
Nega l'accesso in scrittura al file. |
Mapping di routine a testo generico
routine di Tchar.h |
_UNICODE e _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tfsopen |
_fsopen |
_fsopen |
_wfsopen |
Requisiti
Funzione |
Intestazione di associazione |
intestazioni facoltative |
---|---|---|
_fsopen |
<stdio.h> |
<share.h> Per la costante del manifesto per il parametro di shflag . |
_wfsopen |
<stdio.h> o <wchar.h> |
<share.h> Per la costante del manifesto per il parametro di shflag . |
Esempio
// crt_fsopen.c
#include <stdio.h>
#include <stdlib.h>
#include <share.h>
int main( void )
{
FILE *stream;
// Open output file for writing. Using _fsopen allows us to
// ensure that no one else writes to the file while we are
// writing to it.
//
if( (stream = _fsopen( "outfile", "wt", _SH_DENYWR )) != NULL )
{
fprintf( stream, "No one else in the network can write "
"to this file until we are done.\n" );
fclose( stream );
}
// Now others can write to the file while we read it.
system( "type outfile" );
}
Equivalente .NET Framework
System:: I:: FILESTREAM:: FILESTREAM