_fdopen _wfdopen
Přidruží proudu pro nízkoúrovňové I/O dříve otevřeného souboru.
FILE *_fdopen(
int fd,
const char *mode
);
FILE *_wfdopen(
int fd,
const wchar_t *mode
);
Parametry
fd
Popisovač souboru otevřeného souboru.mode
Typ souboru přístup.
Vrácená hodnota
Každá z těchto funkcí vrátí ukazatel otevřít datový proud.Hodnota ukazatele null označuje chybu.Při výskytu chyby je vyvoláno neplatný parametr popisovače, jak je popsáno v Ověření parametrů.Pokud je povoleno spuštění pokračovat, errno buď nastavena na EBADF, označující chybný soubor deskriptoru, nebo EINVAL, což znamená, že mode byl ukazatel s hodnotou null.
Další informace o těchto a jiných kódů chyb naleznete v _doserrno, kód chyby, _sys_errlist a _sys_nerr.
Poznámky
_fdopen Funkce přidruží soubor, který je identifikován datovému proudu I/O fda tím umožňuje soubor, který je otevřen pro nízkoúrovňové I/O s vyrovnávací pamětí a formátování._wfdopenverze znaku wide _fdopen; mode argument _wfdopen je řetězec znaků wide._wfdopena _fdopen jinak se chovají stejně.
Mapování rutina Generic Text
Rutina Tchar.h |
_UNICODE a _MBCS není definován |
_MBCS, definice |
_UNICODE, definice |
---|---|---|---|
_tfdopen |
_fdopen |
_fdopen |
_wfdopen |
mode Znakový řetězec Určuje typ souboru a přístup k souboru.
Řetězec znaků mode Určuje typ souboru, požadovaný přístup podle následující tabulky.
"r"
Otevře pro čtení.Pokud soubor neexistuje nebo nemůže být nalezen fopen volání se nezdaří."w"
Otevře prázdný soubor pro zápis.Pokud daný soubor existuje, jsou zničeny jeho obsah."a"
Otevře pro zápis na konci souboru (připojení).Pokud neexistuje, vytvoří se soubor."r+"
Otevře pro čtení i zápis.(Musí existovat soubor.)"w+"
Otevře prázdný soubor pro čtení i zápis.Pokud daný soubor existuje, jsou zničeny jeho obsah."a+"
Otevře pro čtení a připojení.Pokud neexistuje, vytvoří se soubor.
Při otevření souboru s "a" nebo "a+" přístup typu vše zapisovat operace dojít na konci souboru.Ukazatel souboru můžete přemístit pomocí fseek nebo rewind, ale vždy přesunuta zpět do konce souboru před žádný zápis operace provedena.Proto nelze přepsat existující data.Když "r+", "w+", nebo "a+" je určen typ přístupu, povoleno čtení i zápis (soubor je označováno jako "Update" Otevřít).Však při přepínání mezi čtení a zápis, musí být zasahujících fflush, fsetpos, fseek, nebo rewind operace.Můžete zadat pro aktuální pozici fsetpos nebo fseek operace, pokud chcete.
Vedle výše uvedených hodnot, mohou být zahrnuty následující znaky v mode určit režim překladu pro znaky nového řádku.
t
Otevřít v textu (přeložit) režimu.V tomto režimu kombinace carriage return-line feed (CR-LF) jsou převáděny na kanály jednoho řádku (LF) na vstupu a kombinace CR-LF na výstup se přeložit znaky LF.Ctrl + Z, je interpretován jako znak konce souboru na vstupu.Otevřen pro čtení nebo zápis souborů fopen Ctrl + Z na konci souboru zjistí a odebere, pokud je to možné.Je důvodem, že použití fseek a ftell může způsobit, že funkce přesunutí v rámci souboru, který končí Ctrl + Z fseek k nesprávnému chování poblíž konce souboru.b
Otevřít v binárním režimu (nepřeložený).Překlady z t režimu potlačeny.c
Povolit příznak potvrzení přidružených filename tak, aby obsah vyrovnávací paměti souborů jsou zapsány přímo na disk, pokud fflush nebo _flushall se nazývá.n
Obnovit příznak potvrzení přidružených filename "potvrzení č." Tato možnost je výchozí.Potlačí také globálního potvrzení příznak-li propojení programu s Commode.obj.Výchozí příznak globálního potvrzení je "Ne potvrzení", pokud není výslovně propojení programu s Commode.obj.
The t, c, and nmode options are Microsoft extensions for fopen and _fdopen.Nelze použít, pokud chcete zachovat přenositelnost ANSI.
Pokud t nebo b nejsou uvedeny v mode, globální proměnná je definována výchozí režim překladu _fmode.Pokud t nebo b předponou argument, funkce se nezdaří a vrátí je NULL.Diskuse textu a binárních režimy, viz textu a binární režim souboru v/V.
Platné znaky pro mode řetězec používaný v fopen a _fdopen odpovídají oflag argumenty použité v _Otevřít a _sopen, takto.
Znaky v mode řetězec |
Equivalent oflagvalue for _open/_sopen |
---|---|
a |
_O_WRONLY | _O_APPEND(usually _O_WRONLY | _O_CREAT | _O_APPEND) |
a+ |
_O_RDWR | _O_APPEND (usually _O_RDWR | _O_APPEND | _O_CREAT ) |
r |
_O_RDONLY |
r+ |
_O_RDWR |
w |
_O_WRONLY(usually _O_WRONLY | _O_CREAT | _O_TRUNC) |
w+ |
_O_RDWR(usually _O_RDWR | _O_CREAT | _O_TRUNC) |
b |
_O_BINARY |
t |
_O_TEXT |
c |
Žádná |
n |
Žádná |
Požadavky
Function |
Požadované záhlaví |
---|---|
_fdopen |
<stdio.h> |
_wfdopen |
<stdio.h> nebo <wchar.h> |
Další informace o kompatibilitě v tématu Kompatibilita.
Příklad
// crt_fdopen.c
// This program opens a file by using low-level
// I/O, then uses _fdopen to switch to stream
// access. It counts the lines in the file.
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <share.h>
int main( void )
{
FILE *stream;
int fd, count = 0;
char inbuf[128];
// Open a file.
if( _sopen_s( &fd, "crt_fdopen.txt", _O_RDONLY, _SH_DENYNO, 0 ) )
exit( 1 );
// Get stream from file descriptor.
if( (stream = _fdopen( fd, "r" )) == NULL )
exit( 1 );
while( fgets( inbuf, 128, stream ) != NULL )
count++;
// After _fdopen, close by using fclose, not _close.
fclose( stream );
printf( "Lines in file: %d\n", count );
}
Vstup: crt_fdopen.txt
Line one
Line two
Výsledek
Lines in file: 2
Ekvivalent v rozhraní .NET Framework
System::IO::FileStream::FileStream