Aracılığıyla paylaş


_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

_readokunan 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 \ndeğ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 EBADFayarlanı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 EINVALayarlanır.

Bu ve diğer iade kodları hakkında daha fazla bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

Açıklamalar

işlevi ile _read fdiliş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

Ayrıca bkz.

Alt düzey G/Ç
_creat, _wcreat
fread
_open, _wopen
_write