LINUX.ORG.RU

fread - детали реализации?

 ,


0

1

Есть ли разница между вызовами

 fread(buf, element_size, count, pf)
 fread(buf, count, element_size, pf)
кроме возвращаемого значения? Чтение идет кусками по element_size байт (для первого случая), или одним куском count*element_size?

Как вообще лучше делать с т.з. производительности? cast tailgunner

★★★★★

Последнее исправление: AntonI (всего исправлений: 1)

Ответ на: комментарий от anonymous

Таких интимных подробностей я там не углядел.

AntonI ★★★★★
() автор топика
Ответ на: комментарий от ilammy

Нет никакой разницы.

Есть. В смысле возвращаемого значения: bytes_read / size, то есть на что делим. Впрочем, в реальной жизни всё это привело к тому, что в 99% случаях единственно удобный способ использования ровно наоборот: fread(buf, 1, sizeof(*buf), fp), тогда точно будет понятно, что файл содержит последнюю правильную запись, а не испорчен.

Ок, спасибо!

AntonI, не стоит так резво верить всем кому попало :)

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от vodz

Есть ли разница между вызовами кроме возвращаемого значения?

Есть. В смысле возвращаемого значения

anonymous
()
Ответ на: комментарий от AntonI

кроме возвращаемого значения?

Хм, да, не заметил.

Чтение идет кусками

Впрочем, с точки зрения производительности, чтение идёт кусками размером с BUFSIZE, а удобства у fread скорее рассматривалось в те времена, когда о бинарной переносимости не очень задумывались, теперь же эти два входных параметра только народ смущают. :)

vodz ★★★★★
()
Ответ на: комментарий от AntonI

Найди уже исходники любой реализации libc и посмотри. Да, внутри эти два числа перемножаются и читается один блок.

anonymous
()
Ответ на: комментарий от vodz

Все равно спасибо за ответ:-)

AntonI ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.