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

Hiç yorum yok:

Yorum Gönder