_open, _wopen
Otevře soubor.Tyto funkce jsou zastaralá, protože zvyšuje bezpečnost verze jsou k dispozici; Podívejte se na téma _sopen_s, _wsopen_s.
int _open(
const char *filename,
int oflag [,
int pmode]
);
int _wopen(
const wchar_t *filename,
int oflag [,
int pmode]
);
Parametry
filename
Název souboru.oflag
Druh operace, které jsou povoleny.pmode
Režim oprávnění.
Vrácená hodnota
Každá z těchto funkcí, vrátí se popisovač souboru pro otevřeného souboru.Vrácená hodnota-1 určuje chybu; v takovém případě errno nastaven na jednu z následujících hodnot.
EACCES
Byl proveden pokus o otevření souboru jen pro čtení pro zápis souboru sdílení režimu nepovoluje zadanou operací, nebo zadaná cesta je adresář.EEXIST
_O_CREAT a _O_EXCL příznaky zadán, ale filename již existuje.EINVAL
Neplatný oflag nebo pmode argument.EMFILE
Nejsou k dispozici žádné další popisovače souboru (je otevřeno příliš mnoho souborů).ENOENT
Soubor nebo cesta nebyla nalezena.
Další informace o těchto a dalších návratové kódy naleznete v tématu errno, _doserrno, _sys_errlist, and _sys_nerr.
Poznámky
_open Funkce otevře do souboru určeného parametrem filename a připraví je pro čtení nebo zápisu podle oflag._wopen je verze širokého znaku _open; filename argumentu _wopen obsahuje řetězec širokého znaku._wopen a _open chovat stejně jako v opačném případě.
Mapování rutin obecného textu
Rutina Tchar.h |
_UNICODE a _MBCS nejsou definovány. |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_topen |
_open |
_open |
_wopen |
oflag je celé číslo výrazu tvořen z jedné nebo více následujících manifestu konstanty nebo konstantní kombinace, které jsou definovány v < fcntl.h >.
_O_APPEND
Přemístí ukazatel souboru na konec souboru před všechny operace zápisu._O_BINARY
Otevře soubor v binárním režimu (nepřeložený).(Viz fopen popis binární režim.)_O_CREAT
Vytvoří soubor a otevře ji pro zápis.Akce nemá vliv, pokud soubor určený parametrem filename existuje.pmode Argument je vyžadován v případě _O_CREAT je zadán._O_CREAT | _O_SHORT_LIVED
Vytvoří soubor jako dočasné a pokud je to možné není vyprázdnit na disk.pmode Argument je vyžadován v případě _O_CREAT je zadán._O_CREAT | _O_TEMPORARY
Vytvoří soubor jako dočasné; soubor je odstraněn při zavření poslední popisovač souboru.pmode Argument je vyžadován v případě _O_CREAT je zadán._O_CREAT | _O_EXCL
Vrátí chybovou hodnotu, pokud soubor určený parametrem filename existuje.Použije pouze při použití s _O_CREAT._O_NOINHERIT
Brání vytvoření sdílený soubor deskriptoru._O_RANDOM
Určuje, že ukládání do mezipaměti je optimalizována pro, ale nejsou omezeny na náhodný přístup z disku._O_RDONLY
Otevře soubor jen pro čtení.Nelze zadat s _O_RDWR nebo _O_WRONLY._O_RDWR
Otevře soubor pro čtení i zápisu.Nelze zadat s _O_RDONLY nebo _O_WRONLY._O_SEQUENTIAL
Určuje, že ukládání do mezipaměti je optimalizována pro, ale nejsou omezeny na sekvenční přístup z disku._O_TEXT
Otevře soubor v režimu textu (přeložit).(Další informace naleznete v tématu Text a vstupně-výstupní soubor binární režim a fopen.)_O_TRUNC
Otevře soubor a oříznut na nulu délku; soubor musí mít oprávnění k zápisu.Nelze zadat s _O_RDONLY._O_TRUNC použít s _O_CREAT Otevře existující soubor nebo vytvoří soubor.[!POZNÁMKA]
_O_TRUNC Příznak ničí obsah zadaného souboru.
_O_WRONLY
Otevře soubor pro zápis pouze.Nelze zadat s _O_RDONLY nebo _O_RDWR._O_U16TEXT
Otevře soubor v režimu Unicode UTF-16._O_U8TEXT
Otevře soubor v režimu Unicode UTF-8._O_WTEXT
Otevře soubor v režimu Unicode.
Chcete-li určit režim přístup k souboru, je nutné zadat buď _O_RDONLY, _O_RDWR, nebo _O_WRONLY.Není k dispozici žádná výchozí hodnota pro režim přístupu.
Pokud _O_WTEXT slouží k otevření souboru pro čtení, _open přečte začátku souboru a zkontroluje značka pořadí bajtů (BOM).Pokud je Kusovník, soubor je považována za UTF-8 nebo UTF-16LE, v závislosti na Kusovníku.Pokud neexistuje žádné Kusovníku, soubor je považována za ANSI.Při otevření souboru pro zápis pomocí _O_WTEXT, je použita UTF-16.Bez ohledu na to ze všech předchozí nastavení nebo bajtové značka pro pořadí, pokud _O_U8TEXT se používá, vždy otevření souboru jako UTF-8, pokud _O_U16TEXT se používá, vždy otevření souboru jako UTF-16.
Při otevření souboru v režimu Unicode pomocí _O_WTEXT, _O_U8TEXT, nebo _O_U16TEXT, vstupní funkce převedení dat, který je načítán ze souboru do UTF-16 data uložená jako typ wchar_t.Funkce, které zápis do souboru otevřít v režimu Unicode očekávané vyrovnávací paměti, které obsahují UTF-16 data uložená jako typ wchar_t.Pokud soubor s kódováním jako UTF-8 je Jakmile je zapsán a obsah kódovaný UTF-8 v souboru je přeložit na UTF-16, pokud je pro čtení dat UTF-16 přeložit na UTF-8.Pokus o čtení nebo zápis lichý počet bajtů v režimu Unicode způsobí, že chyba ověření parametru.Při čtení nebo zápisu dat, který je uložen ve svém programu jako UTF-8, použijte namísto režimu Unicode režim text nebo binární soubor.Zodpovídáte za jakékoli požadované kódování překladu.
Pokud _open je volána s _O_WRONLY|_O_APPEND (připojit režimu) a _O_WTEXT, _O_U16TEXT, nebo _O_U8TEXT, nejprve se pokusí otevřít soubor pro čtení a zápis, přečtěte si Kusovníku a pak znovu otevřete pro zápis pouze.Pokud otevírání souboru pro čtení a zápis nezdaří, otevře soubor pro zápis pouze a použije výchozí hodnotu pro nastavení režimu Unicode.
Pokud dvě nebo více manifestu konstanty se používají k formuláři oflag argument, konstanty jsou spojeny s na (operátor bitová OR|).Diskusi režimů binární a text, naleznete v části Text a vstupně-výstupní soubor binární režim.
pmode Argument je třeba zadat pouze v případě _O_CREAT je zadán.Pokud soubor již existuje, pmode je ignorována.V opačném pmode Určuje nastavení oprávnění souborů, které jsou nastaveny při prvním zavření nový soubor._open použije aktuální maska souboru oprávnění k pmode předtím, než jsou oprávnění nastavena.(Další informace naleznete v tématu _umask.) pmode je celé číslo výraz, který obsahuje jeden nebo oba následující manifestu konstanty, které jsou definovány v < sys\stat.h >.
_S_IREAD
Povoleno pouze při čtení._S_IWRITE
Zápis povolen.(V důsledku toho umožňuje čtení a zápis.)_S_IREAD | _S_IWRITE
Čtení a zápis povolen.
Když jsou uvedeny obě konstanty, jsou spojeny s na (operátor bitová OR|).V systému Windows jsou všechny soubory čitelnou; oprávnění jen pro zápis není k dispozici.Proto režimy _S_IWRITE a _S_IREAD | _S_IWRITE jsou ekvivalentní.
Pokud jinou hodnotu než kombinaci _S_IREAD a _S_IWRITE je určena pro pmode– i v případě, že by zadejte platné pmode v jiném operačním systému – nebo pokud je některá jiné než povolená hodnota oflag určeny hodnoty, funkce generuje kontrolní výrazy v režimu ladění a vyvolá obslužnou rutinu neplatný parametr, jak je popsáno v Ověření parametru.Pokud je povoleno spuštění pokračovat, funkce vrátí hodnotu -1 a nastaví errno na EINVAL.
Požadavky
Rutina |
Požadovaný hlavičkový soubor |
Volitelné záhlaví |
---|---|---|
_open |
< io.h > |
< fcntl.h >, < sys\types.h >, < sys\stat.h > |
_wopen |
< io.h > nebo < wchar.h > |
< fcntl.h >, < sys\types.h >, < sys\stat.h > |
_open a _wopen jsou rozšíření od společnosti Microsoft.Další informace o kompatibilitě, podívejte se na téma Kompatibilita.
Knihovny
Všechny verze knihoven C run-time.
Příklad
// crt_open.c
// compile with: /W3
/* This program uses _open to open a file
* named CRT_OPEN.C for input and a file named CRT_OPEN.OUT
* for output. The files are then closed.
*/
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
int main( void )
{
int fh1, fh2;
fh1 = _open( "CRT_OPEN.C", _O_RDONLY ); // C4996
// Note: _open is deprecated; consider using _sopen_s instead
if( fh1 == -1 )
perror( "Open failed on input file" );
else
{
printf( "Open succeeded on input file\n" );
_close( fh1 );
}
fh2 = _open( "CRT_OPEN.OUT", _O_WRONLY | _O_CREAT, _S_IREAD |
_S_IWRITE ); // C4996
if( fh2 == -1 )
perror( "Open failed on output file" );
else
{
printf( "Open succeeded on output file\n" );
_close( fh2 );
}
}
Výstup
Open succeeded on input file
Open succeeded on output file