fread

Membaca data dari aliran.

Sintaks

size_t fread(
   void *buffer,
   size_t size,
   size_t count,
   FILE *stream
);

Parameter

buffer
Lokasi penyimpanan untuk data.

size
Ukuran item dalam byte.

count
Jumlah maksimum item yang akan dibaca.

stream
Penunjuk ke FILE struktur.

Nilai hasil

fread mengembalikan jumlah item lengkap yang dibaca fungsi, yang mungkin kurang dari count jika terjadi kesalahan, atau jika menemukan akhir file sebelum mencapai count. feof Gunakan fungsi atau ferror untuk membedakan kesalahan baca dari kondisi akhir file. Jika size atau count 0, fread mengembalikan 0 dan konten buffer tidak berubah. Jika stream atau buffer adalah penunjuk null, fread memanggil handler parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi ini diatur errno ke EINVAL dan mengembalikan 0.

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

Keterangan

Fungsi membaca fread hingga count item size byte dari input stream dan menyimpannya di buffer. Penunjuk file yang terkait dengan stream (jika ada) dimajukan dengan jumlah byte fread yang dibaca. Jika aliran yang diberikan dibuka dalam mode teks, baris baru gaya Windows dikonversi menjadi baris baru bergaya Unix. Artinya, pasangan umpan baris kembali (CRLF) carriage digantikan oleh karakter umpan baris tunggal (LF). Penggantian tidak berpengaruh pada penunjuk file atau nilai pengembalian. Posisi penunjuk file tidak ditentukan jika terjadi kesalahan. Nilai item baca sebagian tidak dapat ditentukan.

Ketika digunakan pada aliran mode teks, jika jumlah data yang diminta (yaitu, size * count) lebih besar dari atau sama dengan ukuran buffer * internal FILE (secara default ukurannya adalah 4096 byte, dapat dikonfigurasi dengan menggunakan setvbuf), data aliran disalin langsung ke buffer yang disediakan pengguna, dan konversi baris baru dilakukan di buffer tersebut. Karena data yang dikonversi mungkin lebih pendek dari data aliran yang disalin ke dalam buffer, data melewati buffer[return_valuesize * ] (di mana return_value adalah nilai pengembalian dari fread) mungkin berisi data yang tidak dikonversi dari file. Untuk alasan ini, kami sarankan Anda menghentikan data karakter null di buffer[return_value * size] jika niat buffer adalah untuk bertindak sebagai string gaya C. Lihat fopen untuk detail tentang efek mode teks dan mode biner.

Fungsi ini mengunci utas lain. Jika Anda memerlukan versi non-penguncian, gunakan _fread_nolock.

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

Persyaratan

Function Header yang diperlukan
fread <stdio.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// crt_fread.c
// This program opens a file named FREAD.OUT and
// writes 25 characters to the file. It then tries to open
// FREAD.OUT and read in 25 characters. If the attempt succeeds,
// the program displays the number of actual items read.

#include <stdio.h>

int main( void )
{
   FILE *stream;
   char list[30];
   int  i, numread, numwritten;

   // Open file in text mode:
   if( fopen_s( &stream, "fread.out", "w+t" ) == 0 )
   {
      for ( i = 0; i < 25; i++ )
         list[i] = (char)('z' - i);
      // Write 25 characters to stream
      numwritten = fwrite( list, sizeof( char ), 25, stream );
      printf( "Wrote %d items\n", numwritten );
      fclose( stream );

   }
   else
      printf( "Problem opening the file\n" );

   if( fopen_s( &stream, "fread.out", "r+t" ) == 0 )
   {
      // Attempt to read in 25 characters
      numread = fread( list, sizeof( char ), 25, stream );
      printf( "Number of items read = %d\n", numread );
      printf( "Contents of buffer = %.25s\n", list );
      fclose( stream );
   }
   else
      printf( "File could not be opened\n" );
}
Wrote 25 items
Number of items read = 25
Contents of buffer = zyxwvutsrqponmlkjihgfedcb

Baca juga

Streaming I/O
I/O file mode teks dan biner
fopen
fwrite
_read