randbrd

Функция            Чтение с диска.

Синтаксис          #include 
                   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.

Смотрите также      getdta randbwd setdta

Пример:

#include
#include
#include
#include

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