Tam olarak eşdeğerdirler. Endianness'a gelince, okuduğun şeye bağlı. Normalde, yazdıkları formata göre "unformat" yapmak zorunda kalacağınız bir bayt tamponu olacaktır. Ve bayt olduğu için, endenlik hiçbir rol oynamaz.
DÜZENLEME: simonc belirttiği gibi
(o% 100 doğru alamadım çünkü ve daha sonra silinen --- fakat amacı geçerli olduğunu): dönüş değeri açısından (bir fark var Fonksiyonun işe yarayıp yaramadığını bilmek için kullanmanız gereken). fread(buffer, 8192, 1, fp)
, yalnızca 8192 bayt okunduğunda 0 veya 1 ve 1 döndürecektir. Ek olarak, Posix, arabellek içeriğinin kısmen okunan nesneler için belirtilmediğini söyler. Pratikte, tampon okunabilecek kadar çok bayt ile doldurulacaktı, ama kaç tane olduğunu bilmediğinizden, bu sizi fazla satın almıyor. Özet olarak, her zaman fread(buffer, 1, 8192, fp);
kullanmalısınız (bu işlevi herhangi bir şey için değil, ancak bir bayt tamponu olarak kullanmanın bir anlamı yoktur).
Eh, bu bayt olduğu için, açıkça endianness bir rol oynayacaktır. Örneğin, bu 8 kb'lik verileri, örneğin 'int' üyeleri olan bir yapıya okumaya çalıştığını düşünün. Char string [] = fread (data, 8192,1, fp); ' – fvdalcin
@fvdalcin Okumakta olan bir şeyi yapmaya çalışıyor. Baytların endike olmaları. Onları okuduğunda, bunları dosya formatının özelliklerine göre yorumlamak zorundadır. Bu, normalde, aynı zamanda, endianness olarak değerlendirilmeden de yapılmalıdır. –
@fvdalcin Ve evet, bu işlevlerin tek makul kullanımı "imzasız char buffer" [8192]; yaymak (tampon, 8192, 1, fp); '. Daha sonra, belirtilen dosya formatına göre tamponu yorumlamanız gerekir. –