CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
randbrd
randbrd
Функция Чтение с диска. Синтаксис #include <dos.h> int randbrd(struct fcb *fcbptr, int recent); Файл, содержащий dos.h прототип Описание Функция randbrd считывает recent записей, используя блок FCB, адресуемый указателем fcbptr. Записи считываются в память по текущему адресу DTA. Записи считываются с диска, причем информация берется из поля random record блока FCB. Эта операция выполняется с помощью системного вызова DOS 0x27. Действительное число считанных записей можно определить проанализировав поля random record блока FCB. Данное поле после операции будет заполнено информацией о числе действительно считанных записей. Возвращаемое В зависимости от результата работы функций randbrd значение возвращает следующие значения: 0- все записи прочитаны; 1- достигнут конец файла (EOF) и последняя запись прочитана полностью; 2- считанные записи будут располагаться рядом с адресом 0xFFFF (прочитано записей столько, сколько возможно). 3- достигунт конец файла и последняя запись обра- ботана не полностью. Переносимость Функция уникальна для DOS. Функция не совместима с Windows. Смотрите также getdta, randbwd, setdta. Пример: #include<process.h> #include<string.h> #include<stdio.h> #include<dos.h> int main(void) { char far *save_dta; char line[80],buffer[256]; struct fcb blk; int i,result; /* ввести имя файла */ printf("Введите устройство и имя файла (без маршрута, например\ a:file.dat)\n"); gets(line); /* записать имя файла в FCB */ if(!parsfnm(line,&blk,1)) { printf("Ошибка при вызове parsfnm\n"); exit(1); } printf("Устройство #%d файл: %s\n\n",blk.fcb_drive, blk.fcb_name); /* открыть файл, с использованием функций DOS, работающих с FCB */ bdosptr(0x0f,&blk,0); /* сохранить старый DTA, создать новый */ save_dta = getdta(); setdta(buffer); /* передать в FCB информацию об DTA */ blk.fcb_recsize = 128; blk.fcb_random = 0L; result = randbrd(&blk,1); /* проверить результат операции */ if(!result) printf("Чтение закончено успешно\n"); else { perror("Ошибка, во время чтения \n"); exit(1); } /* считать данные из новой DTA */ printf("Первые 128 символов:\n); for(i=0; i<128; i++) putchar(buffer[i]); /* восстановить DTA */ setdta(save_dta); return 0; }