Поясните, какую функцию выполняет данный оператор: while (ReadFile (hIn, Buffer, BUF_SIZE, &nIn, NULL) && nIn > 0) - вопрос №1696373

05.11.15
1 ответ

Лучший ответ по мнению автора

while (ReadFile (hIn, Buffer, BUF_SIZE, &nIn, NULL) && nIn > 0)

начнем с ReadFile (hIn, Buffer, BUF_SIZE, &nIn, NULL) — читать из файла

vsokovikov.narod.ru/New_MSDN_API/Menage_files/fn_readfile.htm

параметры

hIn — хендл файла

Buffer — указатель на буфур

BUF_SIZE — размер читаемого блока данных, здесь может быть переменная с размером буфера, но это и логично — читаемый блок не должен быть больше буфера что бы не залезть в чужой участок памяти… и равенство этих величин так же логично..

&nIn — ссылка на переменную, куда надо будет вписать число прочитанных байт по факту. пояснение — в переменной выше может быть запрошено байтов больше чем осталось до конца файла. фактическое значение укажет размер ценной информации. все остальное в буфере следует считать мусором

NULL — специальная фишка для асинхронной работы с файлом — когда функция может вернуть значение раньше чем операция завершится физически. тут указывается ссылка на спец структуру для работы с файлами открымы для асинхронного режима. в данном случае не используются эти фичи

ReadFile возвращает логическое значение успех/не успех, подробнее в описании. в общем случае истина это без ошибок, однако при этом может быть считано 0 байт — указатель и так уже был на конце файла

while- задет цикл по смыслу — пока чтение-из-файла-без-ошибок И считано-больше-0-байтов — делать…
05.11.15
Лучший ответ по мнению автора

Виталий

Читать ответы
Посмотреть всех экспертов из раздела Технологии > C/C++
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store