_read
Lee datos desde un archivo.
Sintaxis
int _read(
int const fd,
void * const buffer,
unsigned const buffer_size
);
Parámetros
fd
Descriptor de archivo que hace referencia al archivo abierto.
buffer
Ubicación de almacenamiento de los datos.
buffer_size
Número máximo de bytes que se pueden leer.
Valor devuelto
_read
devuelve el número de bytes leídos, que puede ser menor que buffer_size
si quedan menos de buffer_size
bytes en el archivo o si el archivo se abrió en modo de texto. En el modo de texto, cada par \r\n
de retorno de carro-avance de línea se reemplaza por un único carácter \n
de avance de línea. Solo se cuenta el carácter de avance de línea en el valor devuelto. El reemplazo no afecta al puntero de archivo.
Si la función intenta leer al final del archivo, devuelve 0. Si fd
no es válido, el archivo no está abierto para leer o el archivo está bloqueado, se invoca el controlador de parámetros no válidos, tal como se describe en Validación de parámetros. Si la ejecución puede continuar, la función devuelve -1 y establece errno
en EBADF
.
Si buffer
es NULL
o si buffer_size
>INT_MAX
, se invoca al controlador de parámetros no válidos. Si la ejecución puede continuar, la función devuelve -1 y errno
se establece en EINVAL
.
Para obtener más información sobre este y otros códigos de retorno, consulte errno
, _doserrno
, _sys_errlist
y _sys_nerr
.
Comentarios
La función _read
lee un máximo de buffer_size
bytes en buffer
desde el archivo asociado a fd
. La operación de lectura se inicia en la posición actual del puntero de archivo asociado al archivo en cuestión. Después de la operación de lectura, el puntero de archivo señala al siguiente carácter no leído.
Si el archivo se abrió en modo de texto, la lectura finaliza cuando _read
encuentra un carácter CTRL+Z, que se trata como un indicador de fin de archivo. Use _lseek
para borrar el indicador de fin de archivo.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
Routine | Encabezado necesario |
---|---|
_read |
<io.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Bibliotecas
Todas las versiones de las bibliotecas en tiempo de ejecución de C.
Ejemplo
// 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.
Output
Read 19 bytes from file
Consulte también
E/S de bajo nivel
_creat
, _wcreat
fread
_open
, _wopen
_write