_read
从文件读取数据。
int _read(
int fd,
void *buffer,
unsigned int count
);
参数
fd
引用打开文件的描述符。缓冲区
数据的存储位置。计数
最大字节数。
返回值
_读取 返回读取的字节数,可能小于 计数 ,如果少于 计数 文件中的字节或文件,则在文本模式中打开,则为; 在每个支持返回换行符 () CR-LF 情况下使用了一个换行符替换。 唯一换行符计数按返回值。 替换不影响文件指针。
如果函数尝试读取在文件末尾,则返回 0。 如果 fd 无效的文件,用于读取不是打开的,或者该文件被锁定,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,该函数返回 – 1 并将 errno 到 EBADF。
如果 缓冲区 是 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