_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 \n
umpan 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.
Output
Read 19 bytes from file
Lihat juga
I/O tingkat rendah
_creat
, _wcreat
fread
_open
, _wopen
_write