Bagikan melalui


_read

Membaca data dari file.

Sintaks

int _read(
   int const fd,
   void * const buffer,
   unsigned const buffer_size
);

Parameter

fd
Pendeskripsi file yang mengacu pada file yang terbuka.

buffer
Lokasi penyimpanan untuk data.

buffer_size
Jumlah maksimum byte yang akan dibaca.

Nilai hasil

_read mengembalikan jumlah byte yang dibaca, yang mungkin kurang dari buffer_size jika ada kurang dari buffer_size byte yang tersisa dalam file, atau jika file dibuka dalam mode teks. Dalam mode teks, setiap pasangan \r\n umpan baris kembali pengangkutan diganti dengan karakter \numpan baris tunggal . Hanya karakter umpan baris tunggal yang dihitung dalam nilai yang dikembalikan. Penggantian tidak memengaruhi penunjuk file.

Jika fungsi mencoba membaca di akhir file, fungsi akan mengembalikan 0. Jika fd tidak valid, file tidak terbuka untuk dibaca, atau file dikunci, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi mengembalikan -1 dan diatur errno ke EBADF.

Jika buffer adalah NULL, atau jika buffer_size>INT_MAX, handler parameter yang tidak valid dipanggil. Jika eksekusi diizinkan untuk melanjutkan, fungsi mengembalikan -1 dan errno diatur ke EINVAL.

Untuk informasi selengkapnya tentang ini dan kode pengembalian lainnya, lihat errno, , _doserrno_sys_errlist, dan _sys_nerr.

Keterangan

Fungsi membaca _read maksimum buffer_size byte ke dalam buffer dari file yang terkait dengan fd. Operasi baca dimulai pada posisi pointer file saat ini yang terkait dengan file yang diberikan. Setelah operasi baca, penunjuk file menunjuk ke karakter belum dibaca berikutnya.

Jika file dibuka dalam mode teks, bacaan berakhir ketika _read menemukan karakter CTRL+Z, yang diperlakukan sebagai indikator akhir file. Gunakan _lseek untuk menghapus indikator akhir file.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Rutin Header yang diperlukan
_read <io.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Pustaka

Semua versi pustaka run-time C.

Contoh

// 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 );
}

Input: crt_read.txt

Line one.
Line two.

Hasil

Read 19 bytes from file

Baca juga

I/O tingkat rendah
_creat, _wcreat
fread
_open, _wopen
_write