Russian Belarusian English German Japanese Ukrainian

Randbrd

CuBook05

Функция

Чтение с диска.
 
Синтаксис

#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.
 
Пример

#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;
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий