Share via


_read

Reads data from a file.

int _read( 
   int fd, 
   void *buffer, 
   unsigned int count  
);

参数

  • fd
    File descriptor referring to the open file.

  • buffer
    数据的存储位置。

  • count
    Maximum number of bytes.

返回值

_read returns the number of bytes read, which might be less than count if there are fewer than count bytes left in the file or if the file was opened in text mode, in which case each carriage return–line feed (CR-LF) pair is replaced with a single linefeed character. Only the single linefeed character is counted in the return value. The replacement does not affect the file pointer.

If the function tries to read at end of file, it returns 0. If fd is invalid, the file is not open for reading, or the file is locked, the invalid parameter handler is invoked, as described in 参数验证. 如果允许执行继续,则该函数返回-1,并将errno 设置为 EBADF

如果bufferNULL,则调用无效参数处理程序。 If execution is allowed to continue, the function returns -1 and errno is set to EINVAL.

For more information about this and other return codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.

备注

The _read function reads a maximum of count bytes into buffer from the file associated with fd. The read operation begins at the current position of the file pointer associated with the given file. After the read operation, the file pointer points to the next unread character.

If the file was opened in text mode, the read terminates when _read encounters a CTRL+Z character, which is treated as an end-of-file indicator. Use _lseek to clear the end-of-file indicator.

要求

例程

必需的标头

_read

<io.h>

有关更多兼容性信息,请参见“简介”中的兼容性

C 运行时库的所有版本。

示例

// 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;
   unsigned int nbytes = 60000, bytesread;

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

Input: crt_read.txt

Line one.
Line two.

Output

Read 19 bytes from file

请参见

参考

低级别 I/O

_creat、_wcreat

fread

_open、_wopen

_write