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;
}
|