Sdílet prostřednictvím


_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_sizebuffer_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 \nodřá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 NULLnebo pokud buffer_size>INT_MAXje , 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 EINVALhodnotu .

Další informace o tomto a dalších návratových kódech naleznete v tématu , , , a_sys_nerr . _sys_errlist_doserrnoerrno

Poznámky

Funkce _read čte maximálně bajty buffer_size ze buffer souboru přidruženého fdk . 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