_read

Lê dados de um arquivo.

Sintaxe

int _read(
   int const fd,
   void * const buffer,
   unsigned const buffer_size
);

Parâmetros

fd
Descritor de arquivo que se refere ao arquivo aberto.

buffer
Local de armazenamento de dados.

buffer_size
Número máximo de bytes a serem lidos.

Valor retornado

_read retorna o número de bytes lidos, que pode ser menor que buffer_size se houver menos que buffer_size bytes restantes no arquivo, ou se o arquivo foi aberto no modo de texto. No modo de texto, cada par \r\n de feed de linha de retorno de carro é substituído por um único caractere \nde feed de linha. Apenas o caractere de avanço de linha único é contado no valor retornado. A substituição não afeta o ponteiro do arquivo.

Se a função tentar ler o final do arquivo, ela retornará 0. Se fd não for válido, o arquivo não estiver aberto para leitura ou o arquivo estiver bloqueado, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução puder continuar, a função retornará um valor -1 e definirá errno como EBADF.

Se buffer for NULL, ou se buffer_size>INT_MAX for 0, o manipulador de parâmetro inválido será invocado. Se a execução tiver permissão para continuar, a função retornará -1 e errno será definido como EINVAL.

Para obter mais informações sobre esses e outros códigos de retorno, confira errno, _doserrno, _sys_errlist e _sys_nerr.

Comentários

A função _read lê um máximo de buffer_size bytes no buffer do arquivo associado com fd. A operação de leitura começa na posição atual do ponteiro de arquivo associado ao arquivo em questão. Após a operação de leitura, o ponteiro do arquivo aponta para o próximo caractere não lido.

Se o arquivo foi aberto no modo de texto, a leitura termina quando _read encontrar um caractere CTRL+Z, que é tratado como um indicador de fim de arquivo. Use _lseek para limpar o indicador de fim do arquivo.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Requisitos

Rotina Cabeçalho necessário
_read <io.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Bibliotecas

Todas as versões das bibliotecas em tempo de execução C.

Exemplo

// 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 );
}

Entrada: crt_read.txt

Line one.
Line two.

Saída

Read 19 bytes from file

Confira também

E/S de baixo nível
_creat, _wcreat
fread
_open, _wopen
_write