fread etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
fread etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

10 Aralık 2018 Pazartesi

fread

Giriş
Birinci parametre doldurulacek bellek alanı, ikinci parametre okunacak elemanın byte cinsinden büyüklüğü, üçüncü parametre kaç tane eleman okumak istediğimizdir.
Örnek
1 tane eleman okumak için şöyle yaparız.
fread (&foo, sizeof(foo), 1, file )
1 byte'lık n tane (yani buffer büyüklüğü kadar) eleman okumak için şöyle yaparız.
fread( buf, 1, sizeof(buf), file );
Örnek
Tüm dosyayı okumak için şöyle yaparız.
FILE *fp=fopen("/data/FR/AjayPatil.jpg","rb");
if(fp)
{
  fseek(fp, 0, SEEK_END);
  data_size=ftell(fp);
  fseek(fp, 0, SEEK_SET);
  jdata=( unsigned char *)malloc(data_size+1);
  if (!jdata)
  {
    fclose(fp);
    return;
  }
  fread(jdata, data_size, 1, fp);
  fclose(fp);
}
Diğer

Döngü Koşulu Olarak fread Kullanmak
while döngüsünden çıktından sonra ferror kontrolü bence isteğe bağlı. EOF'tan dolayı mı yoksa okuma hatasından dolayı mı çıktığımızı anlamaya yarar.
Örnek
Şöyle yaparız
size_t nret;
size_t nmemb = 256;

while (nmemb == (nret = fread(buffer, sizeof *buffer, nmemb, fp))) {
    // do something with buffer
}

if (nret) {
    // do the same thing with buffer that was in the loop
}

if (ferror(fp)) {
    // handle the error, probably exit/return
} else {
    // continue execution
}
Örnek
Şöyle yaparız.
int eof;
do {  
  eof = fread(&pn, sizeof(int), 1, fp) < 1;
  if ( !eof ) {
    ...
  }
} while ( !eof );