Compartir a través de


_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