Sono esattamente equivalenti. Per quanto riguarda l'endianità, dipende da cosa stai leggendo. Normalmente, sarà un buffer di byte, che dovrete quindi "unformat", in base al formato con cui sono stati scritti. E poiché è byte, l'endianità non ha alcun ruolo.
EDIT:
Come simonc rilevare (e quindi eliminato, perché non ha ottenuto il 100% a destra --- ma il suo punto era valido): c'è una differenza per quanto riguarda il valore di ritorno (che è necessario utilizzare per sapere se la funzione ha funzionato o meno). fread(buffer, 8192, 1, fp)
restituirà 0 o 1 e 1 solo se sono stati letti tutti gli 8192 byte. Inoltre, Posix dice che il contenuto del buffer non è specificato per oggetti parzialmente letti. In pratica, il buffer sarà stato riempito con il numero di byte che è possibile leggere, ma dal momento che non sai quanti sono, non ti comprano molto. In breve, dovresti sempre usare fread(buffer, 1, 8192, fp);
(dato che non ha senso usare questa funzione solo per un buffer di byte).
fonte
2013-10-16 17:48:48
Bene, dato che sono byte, ovviamente l'endianità giocherà un ruolo. Immagina che stia cercando di leggere questi 8kb di dati in una struttura che ha membri 'int', per esempio. Si presume che stia cercando di fare qualcosa come 'char string [] = fread (data, 8192,1, fp);' – fvdalcin
@fvdalcin Legge i byte. I byte non hanno endianness. Una volta che li ha letti, deve interpretarli secondo le specifiche del formato di file. Questo dovrebbe normalmente essere fatto senza considerazioni di endianness. –
@fvdalcin E sì, l'unico uso ragionevole di queste funzioni è 'char buffer non firmato [8192]; fread (buffer, 8192, 1, fp); '. Successivamente, è necessario interpretare il buffer, in base al formato di file specificato. –