SORU
21 Aralık 2011, ÇARŞAMBA


Nasıl fread gerçekten işe yarıyor mu?

fread Bildirgesi aşağıdaki gibidir:

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

Soru: fread iki tür aramaları performans Okuma: bir fark var

char a[1000];
  1. fread(a, 1, 1000, stdin);
  2. fread(a, 1000, 1, stdin);

1000 bayt okuraynı andaher zaman?

CEVAP
21 Aralık 2011, ÇARŞAMBA


Olabilir veya performansında herhangi bir fark yoktur. Semantik bir fark yoktur.

fread(a, 1, 1000, stdin);

her 1 byte uzunluğunda 1000 veri elemanları, okumaya çalışır.

fread(a, 1000, 1, stdin);

1000 bayt uzunluğundaki 1 veri öğesi okumaya çalışır.

fread() okumak mümkün oldu veri elemanları, bayt sayısını değil sayısını verir çünkü farklılar. Eğer ulaşana dosya sonu (veya bir hata durumu) önce okuma Tam 1000 bayt, ilk sürümü belirtmek için tam olarak kaç byte okumak; ikincisi, sadece başarısız olur ve 0 değerini döndürür.

Uygulamada, muhtemelen 1000 bayt okumaya çalışan alt düzey bir işlev çağrısı için gidiyor ve kaç aslında okuma gösterir. Büyük okur, çok iyi olur alt düzey çağırır. fread() tarafından döndürülen değeri hesaplama farklı, ama hesaplama gider saçmadır.

Okumak için yeterli veri yok eğer uygulama söyleyebilir eğer bir fark, veri okumak için denemeden önce olabilir. Eğer 900 baytlık bir dosya okuma, örneğin, ilk sürümü tüm 900 bayt okuma ve ikinci bir şey okumak zahmetine olmasa da 900, dönecektir. Her iki durumda da, dosya konum göstergesi sayısı ile gelişmişkarakterlerbaşarılı bir şekilde okumak, yani, 900.

Ama genel olarak, muhtemelen ne gerek dayalı aramak için nasıl seçmelisiniz. Eğer kısmi bir okuma hiç bir şey okuma değil daha iyi eğer tek bir veri öğesi oku. Kısmi ise, daha küçük boyutta okumak faydalıdır okur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lupe Fiasco

    Lupe Fiasco

    23 ŞUBAT 2006
  • Monica Catral

    Monica Catra

    12 NİSAN 2009
  • bored before i even began

    bored before

    30 Mart 2009