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

  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • hoorahjencar

    hoorahjencar

    6 HAZİRAN 2007
  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008