_fsopen, _wfsopen
Sdílení souborů otevře datový proud.
FILE *_fsopen(
const char *filename,
const char *mode,
int shflag
);
FILE *_wfsopen(
const wchar_t *filename,
const wchar_t *mode,
int shflag
);
Parametry
filename
Název soubor otevřít.mode
Typ oprávněného přístupu.shflag
Typ sdílení povoleno.
Vrácená hodnota
Každá z těchto funkcí vrací ukazatel na datový proud.Hodnota nulového ukazatele indikuje chybu.Pokud filename nebo mode je NULL nebo prázdný řetězec, tyto funkce vyvolat obslužnou rutinu neplatný parametr, jak je popsáno v Ověření parametru.Pokud provádění může pokračovat, vrátí funkce NULL a nastaví errno na EINVAL.
Další informace o těchto a dalších chybových kódech naleznete v části _doserrno, errno, _sys_errlist, and _sys_nerr.
Poznámky
_fsopen Funkce otevře určený soubor filename jako proud a připraví soubor pro následující sdílené čtení nebo zápisu, podle režimu a shflag argumenty._wfsopenje verze širokého znaku _fsopen; filename a mode argumenty pro _wfsopen jsou řetězci širokého znaku._wfsopen a _fsopen se jinak chovají stejně.
Řetězec znaků mode Určuje typ přístupu pro soubor, jak je znázorněno v následující tabulce.
Termín |
Definice |
---|---|
"r" |
Otevře pro čtení.Pokud soubor neexistuje nebo nemůže být nalezen, volání _fsopen se nezdaří. |
"w" |
Otevře prázdný soubor pro zápis.Pokud daný soubor existuje, jeho obsah je zničen. |
"a" |
Otevře pro zápis na konci souboru (připojení); nejprve vytvoří soubor, pokud již neexistuje. |
"r+" |
Otevře pro čtení i zápis. (Soubor musí existovat.) |
"w+" |
Otevře prázdný soubor pro čtení i zápis.Pokud daný soubor existuje, jeho obsah je zničen. |
"a+" |
Otevře pro čtení a přidávání; nejprve vytvoří soubor, pokud již neexistuje. |
Typy "w" a "w+" je třeba používat opatrně, protože mohou poškodit existující soubory.
Při otevření souboru s "a" nebo "a+" přístup k typu, všechny zápis operace dojít na konec souboru.Ukazatel na soubor může být přemístěny pomocí fseek nebo rewind, ale je vždy přesunuta zpět na konec souboru před libovolný zápis operace provádí.Tudíž nemohou být žádná existující data přepsána.Když "r+", "w+", nebo "a+" je nastaven typ přístupu, je povoleno čtení i zápis (soubor se říká být otevřeny pro aktualizaci).Však při přepnutí mezi čtení a zápis, musí existovat podílející se fsetpos, fseek, nebo vzad operace.Podle potřeby lze určit aktuální pozici operace fsetpos nebo fseek.Kromě výše uvedených hodnot, jeden z následujících znaků mohou být zahrnuty v mode Chcete-li určit režim překladu pro nové řádky a pro správu souborů.
Termín |
Definice |
---|---|
t |
Otevře soubor v režimu textu (přeložit).V tomto režimu carriage return – řádek krmné (CR-LF) kombinace jsou přeloženy do kanálů jeden řádek (LF) na vstupu a LF znaky jsou převedeny na CR-LF kombinace na výstupu.Příkaz CTRL + Z je na vstupu interpretován jako znak konce souboru.Otevřen pro čtení nebo čtení/zápis souborů _fsopen CTRL + Z na konci souboru zjistí a odebere, pokud je to možné.Je důvodem, že pomocí fseek a ftell Chcete-li přesunout v rámci souboru může způsobit, že končí CTRL + Z fseek na konci souboru fungovat správně. |
b |
Otevře soubor v binárním režimu (nepřeložený); nad překlady jsou potlačeny. |
S |
Určuje, zda je mezipaměť optimalizovaná, ale nikoliv omezená, pro disk se sekvenčním přístupem. |
R |
Určuje, zda je mezipaměť optimalizovaná, ale nikoliv omezená, pro disk s náhodným přístupem. |
T |
Označí soubor jako dočasný.Pokud je to možné, není zapsán na disk. |
D |
Označí soubor jako dočasný.Je smazán po uzavření posledního ukazatele na soubor. |
Pokud t nebo b není uveden v mode, režim překladu je definován výchozí režim proměnné _fmode.Pokud je t nebo b předponou argumentu, funkce selže a vrátí NULL.Informace o textu a binárních režimech naleznete v tématu Text a vstup-výstupní režim binárního souboru.
Argument shflag je konstantní výraz skládající se z jedné z následujících konstant manifestu, definované v Share.h.
Termín |
Definice |
---|---|
_SH_COMPAT |
Nastaví režim kompatibility 16bitových aplikací. |
_SH_DENYNO |
Povolení čtení a zápis. |
_SH_DENYRD |
Odepřít přístup pro čtení souboru. |
_SH_DENYRW |
Odepře oprávnění pro čtení a zápis do souboru. |
_SH_DENYWR |
Odepřít přístup pro zápis do souboru. |
Rutinní mapování obecného textu
Rutina Tchar.h |
_UNICODE a _MBCS nejsou definovány |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_tfsopen |
_fsopen |
_fsopen |
_wfsopen |
Požadavky
Funkce |
Požadované záhlaví |
Volitelná záhlaví |
---|---|---|
_fsopen |
<stdio.h> |
<Share.h> Pro konstanta manifestu pro shflag parametr. |
_wfsopen |
<stdio.h> nebo <wchar.h> |
<Share.h> Pro konstanta manifestu pro shflag parametr. |
Příklad
// 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" );
}