Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hiermee opent u een stream met het delen van bestanden.
Syntaxis
FILE *_fsopen(
const char *filename,
const char *mode,
int shflag
);
FILE *_wfsopen(
const wchar_t *filename,
const wchar_t *mode,
int shflag
);
Parameterwaarden
filename
De naam van het te openen bestand.
mode
Het type toegang is toegestaan.
shflag
Het type delen is toegestaan.
Retourwaarde
Elk van deze functies retourneert een aanwijzer naar de stream. Een null-aanwijzerwaarde geeft een fout aan. Als filename of mode een lege tekenreeks is NULL , roepen deze functies de ongeldige parameterhandler aan, zoals beschreven in parametervalidatie. Als de uitvoering mag worden voortgezet, retourneren deze functies NULL en stellen ze errno in op EINVAL.
Zie , errno, en _doserrno_sys_errlistvoor meer informatie over deze en andere foutcodes_sys_nerr .
Opmerkingen
De _fsopen functie opent het bestand dat is filename opgegeven als een stroom en bereidt het bestand voor op volgende gedeelde lees- of schrijffuncties, zoals gedefinieerd door de modus en shflag argumenten.
_wfsopen is een brede versie van _fsopen; de filename argumenten die mode_wfsopen tekenreeksen breed zijn.
_wfsopen en _fsopen gedraagt zich op dezelfde manier als anders.
De tekenreeks mode geeft het type toegang op dat is aangevraagd voor het bestand, zoals wordt weergegeven in de volgende tabel.
| Termijn | Definitie |
|---|---|
"r" |
Wordt geopend voor lezen. Als het bestand niet bestaat of niet kan worden gevonden, mislukt de _fsopen aanroep. |
"w" |
Hiermee opent u een leeg bestand voor schrijven. Als het opgegeven bestand bestaat, wordt de inhoud ervan vernietigd. |
"a" |
Wordt geopend voor schrijven aan het einde van het bestand (toevoegen); maakt eerst het bestand als het niet bestaat. |
"r+" |
Wordt geopend voor zowel lezen als schrijven. (Het bestand moet bestaan.) |
"w+" |
Hiermee opent u een leeg bestand voor zowel lezen als schrijven. Als het opgegeven bestand bestaat, wordt de inhoud ervan vernietigd. |
"a+" |
Wordt geopend voor lezen en toevoegen; maakt eerst het bestand als het niet bestaat. |
Gebruik de typen 'w' en 'w+' met zorg, omdat ze bestaande bestanden kunnen vernietigen.
Wanneer een bestand wordt geopend met het toegangstype 'a' of 'a+' , vinden alle schrijfbewerkingen plaats aan het einde van het bestand. De bestandspointer kan worden verplaatst met behulp van fseek of rewind, maar deze wordt altijd teruggezet naar het einde van het bestand voordat een schrijfbewerking wordt uitgevoerd. Bestaande gegevens kunnen dus niet worden overschreven. Wanneer het toegangstype 'r+', 'w+' of 'a+' is opgegeven, zijn zowel lezen als schrijven toegestaan (het bestand is geopend voor update). Wanneer u echter schakelt tussen lezen en schrijven, moet er een tussenliggende fsetpos, fseekof rewind bewerking zijn. De huidige positie kan desgewenst worden opgegeven voor de fsetpos of fseek bewerking. Naast de bovenstaande waarden kan een van de volgende tekens worden opgenomen om mode de vertaalmodus voor nieuwe regels en voor bestandsbeheer op te geven.
| Termijn | Definitie |
|---|---|
t |
Hiermee opent u een bestand in de tekstmodus (vertaald). In deze modus worden combinaties van regelterugloopinvoer (CR-LF) omgezet in één regelinvoer (LF) en worden LF-tekens omgezet in CR-LF combinaties op uitvoer. Ctrl+Z wordt ook geïnterpreteerd als een eindbestandsteken bij invoer. In bestanden die zijn geopend voor lezen of lezen/schrijven, _fsopen controleert u op een Ctrl+Z aan het einde van het bestand en verwijdert u het, indien mogelijk. Het wordt verwijderd omdat het gebruik fseek en ftell het verplaatsen binnen een bestand dat eindigt op ctrl+Z, ertoe kan leiden fseek dat het zich niet goed gedraagt aan het einde van het bestand. |
b |
Hiermee opent u een bestand in binaire (niet-vertaalde) modus; de bovenstaande vertalingen worden onderdrukt. |
D |
Hiermee geeft u een tijdelijk bestand dat wordt verwijderd wanneer de laatste aanwijzer naar het bestand wordt gesloten. |
R |
Hiermee geeft u op dat caching is geoptimaliseerd voor, maar niet beperkt tot, willekeurige toegang vanaf schijf. |
S |
Hiermee geeft u op dat caching is geoptimaliseerd voor, maar niet beperkt tot, sequentiële toegang vanaf schijf. |
T |
Hiermee geeft u een bestand dat niet naar schijf wordt geschreven, tenzij geheugendruk vereist. |
Als t of b niet is opgegeven in mode, wordt de vertaalmodus gedefinieerd door de standaardmodusvariabele _fmode. Als t of b wordt voorafgegaan door het argument, mislukt de functie en wordt NULLgeretourneerd. Zie Voor een bespreking van tekst- en binaire modi , tekst en binaire modus bestand I/O.
Met betrekking tot T en D:
-
Tvermijdt het schrijven van het bestand naar schijf zolang geheugendruk dit niet vereist. ZieFILE_ATTRIBUTE_TEMPORARYin Bestandskenmerken constantenen dit blogbericht Het is alleen tijdelijkvoor meer informatie. -
Dgeeft een gewoon bestand op dat naar schijf wordt geschreven. Het verschil is dat het automatisch wordt verwijderd wanneer deze wordt gesloten. U kuntTDcombineren om beide semantiek te verkrijgen.
_fsopen en _wfsopen zijn Microsoft-specifieke varianten van fopen. Ze maken geen deel uit van de ANSI-standaard. Voor een meer draagbare en veilige functie, als u het delen van bestanden niet nodig hebt, kunt u overwegen _wfopen_s of fopen_s.
Het argument shflag is een constante expressie die bestaat uit een van de volgende manifestconstanten, gedefinieerd in Share.h.
| Termijn | Definitie |
|---|---|
_SH_DENYNO |
Hiermee staat u lees- en schrijftoegang toe. |
_SH_DENYRD |
Hiermee wordt leestoegang tot het bestand geweigerd. |
_SH_DENYRW |
Hiermee wordt lees- en schrijftoegang tot het bestand geweigerd. |
_SH_DENYWR |
Schrijftoegang tot het bestand wordt geweigerd. |
De globale status van deze functie is standaard gericht op de toepassing. Als u dit gedrag wilt wijzigen, raadpleegt u de globale status in de CRT.
Algemene routinetoewijzingen voor tekst
Tchar.h routine |
_UNICODE en _MBCS niet gedefinieerd |
_MBCS gedefinieerd |
_UNICODE gedefinieerd |
|---|---|---|---|
_tfsopen |
_fsopen |
_fsopen |
_wfsopen |
Behoeften
| Functie | Vereiste header | Optionele headers |
|---|---|---|
_fsopen |
<stdio.h> |
<share.h>Voor manifestconstante voor shflag parameter. |
_wfsopen |
<stdio.h> of <wchar.h> |
<share.h>Voor manifestconstante voor shflag parameter. |
Voorbeeld
// 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" );
}
No one else in the network can write to this file until we are done.
Zie ook
Stream I/O-
fclose, _fcloseall
_fdopen, _wfdopen
ferror
_fileno
fopen, _wfopen
freopen, _wfreopen
_open, _wopen
_setmode
_sopen, _wsopen