_read
Bir dosyadan verileri okur.
Sözdizimi
int _read(
int const fd,
void * const buffer,
unsigned const buffer_size
);
Parametreler
fd
Açık dosyaya başvuran dosya tanımlayıcısı.
buffer
Verilerin depolama konumu.
buffer_size
Okunacak bayt sayısı üst sınırı.
Dönüş değeri
_read
okunan bayt sayısını döndürür. Bu sayı, dosyada bayt sayısından buffer_size
az kalma durumundan veya dosyanın metin modunda açılmasından daha az olabilirbuffer_size
. Metin modunda, her satır başı satır besleme çifti \r\n
tek satır besleme karakteriyle \n
değiştirilir. Dönüş değerinde yalnızca tek satır besleme karakteri sayılır. Değiştirme işlemi dosya işaretçisini etkilemez.
İşlev dosyanın sonunda okumaya çalışırsa 0 döndürür. fd
Geçerli değilse, dosya okumak için açık değilse veya dosya kilitliyse, Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, işlevi -1 döndürür ve olarak EBADF
ayarlanırerrno
.
ise buffer
veya isebuffer_size
>INT_MAX
, geçersiz parametre işleyicisi çağrılır.NULL
Yürütmenin devam etmesi için izin verilirse, işlev -1 döndürür ve errno
olarak EINVAL
ayarlanır.
Bu ve diğer iade kodları hakkında daha fazla bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Açıklamalar
işlevi ile _read
fd
ilişkilendirilmiş dosyadan içine buffer
en fazla buffer_size
bayt okur. Okuma işlemi, verilen dosyayla ilişkili dosya işaretçisinin geçerli konumunda başlar. Okuma işleminden sonra, dosya işaretçisi bir sonraki okunmamış karakteri gösterir.
Dosya metin modunda açıldıysa, dosya sonu göstergesi olarak ele alınan CTRL+Z karakteriyle karşılaşıldığında _read
okuma sonlandırılır. Dosya sonu göstergesini temizlemek için kullanın _lseek
.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
_read |
<io.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Kitaplıklar
C çalışma zamanı kitaplıklarının tüm sürümleri.
Örnek
// 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, bytesread;
unsigned int nbytes = 60000;
/* 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 );
}
Giriş: crt_read.txt
Line one.
Line two.
Çıktı
Read 19 bytes from file