Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megnyit egy streamet fájlmegosztással.
Szemantika
FILE *_fsopen(
const char *filename,
const char *mode,
int shflag
);
FILE *_wfsopen(
const wchar_t *filename,
const wchar_t *mode,
int shflag
);
Paraméterek
filename
A megnyitni kívánt fájl neve.
mode
A hozzáférés típusa engedélyezett.
shflag
Az engedélyezett megosztás típusa.
Visszaadott érték
Mindegyik függvény egy mutatót ad vissza a streamhez. A null mutató értéke hibát jelez. Ha filename vagy modeNULL üres sztring, ezek a függvények meghívják az érvénytelen paraméterkezelőt a paraméterérvényesítésben leírtak szerint. Ha a végrehajtás folytatódik, ezek a függvények NULL ad vissza, és a errnoEINVALértékre állítják.
További információ ezekről és más hibakódokról: errno, _doserrno, _sys_errlist, és _sys_nerr.
Megjegyzések
A _fsopen függvény megnyitja a streamként megadott filename fájlt, és előkészíti a fájlt a későbbi közös olvasásra vagy írásra a mód és shflag az argumentumok által meghatározott módon.
_wfsopena (z) ; a _fsopen széles karakterű sztringek és filename argumentumok mode széles karakterű változata_wfsopen.
_wfsopen és _fsopen másképp ugyanúgy viselkedik.
A karaktersztring mode a fájlhoz kért hozzáférés típusát adja meg, ahogyan az az alábbi táblázatban is látható.
| Időszak | Definíció |
|---|---|
"r" |
Megnyílik olvasásra. Ha a fájl nem létezik vagy nem található, a _fsopen hívás meghiúsul. |
"w" |
Üres fájl megnyitása íráshoz. Ha a megadott fájl létezik, annak tartalma megsemmisül. |
"a" |
Megnyitja az írást a fájl végén (hozzáfűzés); először létrehozza a fájlt, ha az nem létezik. |
"r+" |
Olvasáshoz és íráshoz is megnyílik. (A fájlnak léteznie kell.) |
"w+" |
Üres fájlt nyit meg olvasáshoz és íráshoz is. Ha a megadott fájl létezik, annak tartalma megsemmisül. |
"a+" |
Olvasáshoz és hozzáfűzéshez megnyílik; először létrehozza a fájlt, ha az nem létezik. |
Óvatosan használja a "w" és a "w+" típust, mivel a meglévő fájlokat megsemmisítheti.
Ha egy fájlt "a" vagy "a+" hozzáférési típussal nyit meg, az összes írási művelet a fájl végén történik. A fájlmutató áthelyezhető a vagy a fseekrewindhasználatával, de az írási művelet végrehajtása előtt mindig visszakerül a fájl végére. Így a meglévő adatok nem írhatók felül. Ha a "r+", "w+" vagy "a+" hozzáférési típus meg van adva, az olvasás és az írás is engedélyezett (a fájl állítólag frissítésre nyitva van). Az olvasás és az írás közötti váltáskor azonban beavatkozásnak fsetposfseekrewind vagy műveletnek kell lennie. Ha szükséges, megadhatja az aktuális pozíciót a művelethez vagy fsetpos a fseek művelethez. A fenti értékek mellett az alábbi karakterek egyikét mode is belefoglalhatja az új sorok fordítási módjának megadásához és a fájlkezeléshez.
| Időszak | Definíció |
|---|---|
t |
Megnyit egy fájlt szöveges (lefordított) módban. Ebben a módban a kocsivisszameneti vonal (CR-LF) kombinációi bemeneten egysoros hírcsatornákra (LF) lesznek lefordítva, az LF karakterek pedig CR-LF kombinációkra lesznek lefordítva a kimeneten. A CTRL+Z billentyűkombinációt a bemeneten fájlvég karakterként értelmezi a rendszer. Olvasásra vagy olvasásra/írásra megnyitott fájlokban ellenőrizze a _fsopen CTRL+Z billentyűkombinációt a fájl végén, és lehetőség szerint eltávolítja. A program azért távolítja el, mert a CTRL+Z billentyűkombinációval végződő fájl használata fseek és ftell azon belüli mozgatása helytelen viselkedést okozhat fseek a fájl vége közelében. |
b |
Fájl megnyitása bináris (nem lefordított) módban; a fenti fordítások el lesznek tiltva. |
D |
Olyan ideiglenes fájlt ad meg, amely az utolsó fájlmutató bezárásakor törlődik. |
R |
Azt adja meg, hogy a gyorsítótárazás a lemezről való véletlenszerű hozzáférésre van optimalizálva, de nem korlátozva. |
S |
Megadja, hogy a gyorsítótárazás a lemezről való szekvenciális hozzáférésre van optimalizálva, de nem korlátozva. |
T |
Olyan fájlt ad meg, amely nincs lemezre írva, kivéve, ha a memóriaterhelés megköveteli. |
t Ha b nincs megadvamode, akkor a fordítási módot az alapértelmezett mód változó _fmodehatározza meg. Ha t vagy b az argumentum előtagja, a függvény meghiúsul, és NULLad vissza. A szöveg- és bináris módokkal kapcsolatos vitafórumért lásd: Szöveg és bináris módú fájl I/O.
A T és a Dtekintetében:
-
Tkerüli a fájl lemezre írását mindaddig, amíg a memóriaterhelés nem igényli. További információ:FILE_ATTRIBUTE_TEMPORARYFájlattribútum-állandók, valamint ez a blogbejegyzés Ez csak ideiglenes. -
Da lemezre írt normál fájlt adja meg. A különbség az, hogy a rendszer automatikusan törli, amikor bezárja. ATDkombinálva mindkét szemantikát lekérheti.
_fsopen és _wfsopen a Microsoft-specifikus változatai fopen. Ezek nem részei az ANSI szabványnak. Ha nem igényel fájlmegosztást, fontolja meg_wfopen_sfopen_svagy .
Az argumentum shflag egy állandó kifejezés, amely a következő jegyzékállandók egyikéből áll, a következőben Share.hdefiniálva: .
| Időszak | Definíció |
|---|---|
_SH_DENYNO |
Olvasási és írási hozzáférést engedélyez. |
_SH_DENYRD |
Letiltja a fájl olvasási hozzáférését. |
_SH_DENYRW |
Letiltja a fájl olvasási és írási hozzáférését. |
_SH_DENYWR |
Letiltja a fájl írási hozzáférését. |
Alapértelmezés szerint ennek a függvénynek a globális állapota hatóköre az alkalmazásra terjed ki. A viselkedés módosításához tekintse meg a globális állapotot a CRT-ben.
Általános szöveges rutinleképezések
Tchar.h rutin |
_UNICODE és _MBCS nincs definiálva |
_MBCS definiálva |
_UNICODE definiálva |
|---|---|---|---|
_tfsopen |
_fsopen |
_fsopen |
_wfsopen |
Követelmények
| Funkció | Kötelező fejléc | Nem kötelező fejlécek |
|---|---|---|
_fsopen |
<stdio.h> |
<share.h>A paraméter jegyzékállandója shflag . |
_wfsopen |
<stdio.h> vagy <wchar.h> |
<share.h>A paraméter jegyzékállandója shflag . |
példa
// 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.
Lásd még
Stream I/O-
fclose, _fcloseall
_fdopen, _wfdopen
ferror
_fileno
fopen, _wfopen
freopen, _wfreopen
_open, _wopen
_setmode
_sopen, _wsopen