MS-DOS для программиста

Определение момента достижения конца файла


Подфункция 06h функции 44h прерывания INT21h поможет вам определить момент достижения конца файла или готовность устройства посимвольной обработки.

Для проверки условия "Конец файла" или готовности устройства можно использовать следующую функцию:

/** * heof * * Проверить условие "Конец файла" * * Функция позволяет проверить факт достижения * конца файла или готовность устройства * * int heof(int handle); * * handle - идентификатор файла или устройства, * для которого необходимо получить * информацию о состоянии * * Возвращаемо значение; * 0 - конец файла не достигнут (для файла), * устройство готово (для устройства); * * 1 - достигнут конец файла (для файла), * устройство не готово (для устройства); * * -1 - произошла ошибка. **/ int heof(int handle) { union REGS reg;

// Заполняем регистровые структуры для вызова // прерывания DOS INT 21h. Код используемой // подфункции - 06h reg.x.ax = 0x4406; reg.x.bx = handle;

// Вызываем прерывание intdos(&reg, &reg);

// Проверяем флаг переноса if(reg.x.cflag == 0) { // Если флаг переноса сброшен в 0, ошибок нет. if(reg.h.al == 0) return(1); else return(0); }

// Если флаг переноса установлен в 1, возвращаем // признак ошибки else return(-1); }

Вы можете использовать эту функцию аналогично функции eof().



Содержание раздела