У нас была дискуссия здесь, на работе относительно того, почему fread и fwrite берут размер для каждого члена и подсчитывают и возвращают число членов, читаемых/написанных, а не просто беря буфер и размер. Единственное, что мы могли бы придумать, - это если вы хотите читать/писать массив структур, которые неравномерно разделены выравниванием платформы и, следовательно, были дополнены, но это не может быть так распространено, чтобы гарантировать этот выбор в дизайне.Какое обоснование для fread/fwrite принимает размер и считается аргументом?
От Fread (3):
функция FREAD() считывает nmemb элементы данных, каждый размер байт длиной, из потока, на который указывает поток, их хранение в месте данного по ptr.
Функция fwrite() записывает элементы данных nmemb, каждый размер байтов длинный, к потоку, на который указывает поток, получая их из местоположения , данного ptr.
fread() и fwrite() возвращают количество элементов, которые были успешно прочитаны или записаны (то есть, а не количество символов). Если произошла ошибка или достигнут конец файла , возвращаемое значение - короткий счетчик (или ноль).
эй, это хороший вопрос. я всегда задавался вопросом об этом – 2008-11-17 16:11:27
. Посмотрите эту тему: http://stackoverflow.com/questions/8589425/how-does-fread-really-work – Franken 2012-04-14 20:42:27