_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 \n
de 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