_read
Čte data ze souboru.
Syntaxe
int _read(
int const fd,
void * const buffer,
unsigned const buffer_size
);
Parametry
fd
Popisovač souboru odkazující na otevřený soubor.
buffer
Umístění úložiště pro data
buffer_size
Maximální počet bajtů, které se mají číst.
Vrácená hodnota
_read
vrátí počet přečtených bajtů, což může být menší než buffer_size
buffer_size
v případě, že v souboru zbývá méně bajtů nebo pokud byl soubor otevřen v textovém režimu. V textovém režimu se každý pár \r\n
návratového řádku řádku nahradí jedním znakem \n
odřádkování . Ve návratové hodnotě se počítá pouze znak kanálu s jedním řádkem. Nahrazení nemá vliv na ukazatel souboru.
Pokud se funkce pokusí přečíst na konci souboru, vrátí hodnotu 0. Pokud fd
není platný, soubor není otevřený pro čtení nebo je soubor uzamčený, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, vrátí funkce hodnotu -1 a nastaví errno
hodnotu EBADF
.
Pokud buffer
je NULL
nebo pokud buffer_size
>INT_MAX
je , je vyvolána neplatná obslužná rutina parametru. Pokud je spuštění povoleno pokračovat, vrátí funkce hodnotu -1 a errno
je nastavena na EINVAL
hodnotu .
Další informace o tomto a dalších návratových kódech naleznete v tématu , , , a_sys_nerr
. _sys_errlist
_doserrno
errno
Poznámky
Funkce _read
čte maximálně bajty buffer_size
ze buffer
souboru přidruženého fd
k . Operace čtení začíná na aktuální pozici ukazatele souboru přidruženého k danému souboru. Po operaci čtení ukazatel souboru odkazuje na další nepřečtený znak.
Pokud byl soubor otevřen v textovém režimu, čtení se ukončí, když _read
narazí na znak CTRL+Z, který se považuje za indikátor konce souboru. Slouží _lseek
k vymazání indikátoru konce souboru.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_read |
<io.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Knihovny
Všechny verze knihoven runtime jazyka C.
Příklad
// crt_read.c
/* This program opens a file named crt_read.txt
* and tries to read 60,000 bytes from
* that file using _read. It then displays the
* actual number of bytes read.
*/
#include <fcntl.h> /* Needed only for _O_RDWR definition */
#include <io.h>
#include <stdlib.h>
#include <stdio.h>
#include <share.h>
char buffer[60000];
int main( void )
{
int fh, bytesread;
unsigned int nbytes = 60000;
/* Open file for input: */
if ( _sopen_s( &fh, "crt_read.txt", _O_RDONLY, _SH_DENYNO, 0 ))
{
perror( "open failed on input file" );
exit( 1 );
}
/* Read in input: */
if (( bytesread = _read( fh, buffer, nbytes )) <= 0 )
perror( "Problem reading file" );
else
printf( "Read %u bytes from file\n", bytesread );
_close( fh );
}
Vstup: crt_read.txt
Line one.
Line two.
Výstup
Read 19 bytes from file
Viz také
Vstupně-výstupní operace nízké úrovně
_creat
, _wcreat
fread
_open
, _wopen
_write