_read
從檔案讀取資料。
int _read(
int fd,
void *buffer,
unsigned int count
);
參數
fd
指的開啟的檔案的檔案描述項。緩衝區
資料的儲存位置。計數
最大位元組數。
傳回值
_讀取 傳回的讀取,這可能會更少的位元組數目比 計數 如果少於 計數位元組停留在該檔案,或如果檔案以文字模式開啟,每一個換行字元 return–line 餵送 (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