_read

从文件读取数据。

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

参数

  • fd
    引用打开文件的描述符。

  • 缓冲区
    数据的存储位置。

  • 计数
    最大字节数。

返回值

_读取 返回读取的字节数,可能小于 计数 ,如果少于 计数 文件中的字节或文件,则在文本模式中打开,则为; 在每个支持返回换行符 () CR-LF 情况下使用了一个换行符替换。 唯一换行符计数按返回值。 替换不影响文件指针。

如果函数尝试读取在文件末尾,则返回 0。 如果 fd 无效的文件,用于读取不是打开的,或者该文件被锁定,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,该函数返回 – 1 并将 errnoEBADF

如果 缓冲区NULL,无效参数调用处理程序。 如果执行允许继续,该函数返回 -1,并 errno 设置为 EINVAL

有关此更改和其他的更多信息返回代码示例,请参见 _doserrno、 errno、 _sys_errlist 和 _sys_nerr

备注

_read 函数读取 计数 字节最大值到 缓冲区 从文件与 fd。 这次读取操作开始在文件指针的当前位置与特定文件。 要在读取操作后,文件指针指向下未阅读的字符。

如果文件在文本模式中打开后,读取停止,当 _read 遇到 CTRL+Z 字符,将文件结尾指示符。 使用 _lseek 清除文件结尾指示符。

要求

实例

必需的头

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

输入:crt_read.txt

Line one.
Line two.

Output

Read 19 bytes from file

请参见

参考

底层I/O

_creat, _wcreat

fread

_open, _wopen

_write