_read
讀取檔案中的資料時。
int _read(
int fd,
void *buffer,
unsigned int count
);
參數
fd
參考開啟檔案的檔案描述項。buffer
資料儲存位置count
最大位元組數。
傳回值
_read 傳回讀取的位元組數,可能小於 計數,如果少於檔案中的 count 位元組,或是檔案在文字模式開啟,在此情況下,每個托架傳回行摘要 (CR-LF) 配對會被單一換行字元取代。 只有單一換行字元在傳回值中被計算。 取代不影響檔案指標。
如果函式嘗試讀取檔案的結尾,則會傳回 0。 如果 fd 無效,檔案進行讀取未開啟、或者檔案鎖定,無效的參數叫用處理常式,如 參數驗證中所述。 如果允許繼續執行,此函式回傳 –1 並將errno 設置為 EBADF。
如果 緩衝區 是 NULL,則呼叫無效的參數處理常式。 如果執行允許繼續,函式會回傳-1,並且errno會設定為 EINVAL。
如需更多關於這些和其他回傳碼的資訊,請參閱 _doserrno 、 errno 、 _sys_errlist 、和 _sys_nerr (_doserrno, errno, _sys_errlist, and _sys_nerr) 。
備註
_read 函式會讀取 計數 位元組數讀入 緩衝區 的最大值,從檔案相關聯的 fd。 讀入作業在檔案指標的目前位置開始 (如果有的話) 與特定檔案相關。 在讀取作業之後,檔案指標指向下一個未讀取的字元。
如果檔案在文字模式開啟,_read 遇到 CTRL+Z 字元(該字元被視為檔案結尾指示器)時,讀取終止。 使用 _lseek 清除檔案結尾指示器。
需求
常式 |
必要的標頭 |
---|---|
_read |
<io.h> |
如需更多關於相容性的資訊,請參閱入門介紹中的 相容性 (Compatibility) 。
程式庫
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