Ответ 1
Ответ: Да, позиция указателя файла автоматически обновляется после операции чтения, так что последовательные функции fread()
читают последовательные записи файлов.
Разъяснение: fread()
- это блок-ориентированная функция. Стандартный прототип:
size_t fread(void *ptr,
size_t size,
size_t limit,
FILE *stream);
Функция читает из потока, на который указывает stream
, и помещает байты в массив, на который указывает ptr
. Он перестает читать, когда выполняется любое из следующих условий:
- Он прочитал
limit
элементы размераsize
или - Он доходит до конца файла или
- Произошла ошибка чтения.
fread()
предоставляет вам такой же контроль, как fgetc()
, и имеет то преимущество, что он может читать более одного символа в одной операции ввода-вывода. Фактически, если позволяет память, вы можете прочитать весь файл в массиве и выполнить всю свою обработку в памяти. Это имеет значительные преимущества в производительности.
fread()
часто используется для чтения записей фиксированной длины непосредственно в structs, но вы можете использовать его для чтения любого файла. Это мой личный выбор для чтения большинства дисковых файлов.