Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП 2012.doc
Скачиваний:
31
Добавлен:
24.09.2019
Размер:
301 Кб
Скачать

Int fscanf(file *stream,const char *format[,adress,...]);

Функция работает аналогично scanf (и scanf_s), но при этом осуществляется

ввод не с клавиатуры, а из указанного файла. Возвращает количество введенных полей.

Если при выполнении операции достигается конец файла, то функция возвращает EOF.

Форматный вывод:

Int fprintf(file *stream,const char *format[,argument,...]);

Функция работает аналогично printf, но при этом вывод осуществляется в указан-

ный файл.

21) Двоичные файлы. Отличие от Delphi Pascal.

В двоичных файлах информация хранится во внутренних форматах без преобразования к символьному виду. Запись в файл и чтение из файла осуществляется через специальный буфер, причем программист должен указывать количество обрабатываемых байт. Разделители компонентов в файле отсутствуют. Если в двоичном дисковом файле все компоненты одинаковой длины, то можно вычислить значение файлового указателя для каждого компонента, и, соответственно, осуществить прямой доступ к элементам.

Двоичный файл, содержащий текстовую информацию, практически ничем не отличается от текстового. Принципиально возможно создать файл как текстовый, а затем прочитать его как двоичный, элементами которого являются

строки (в этом случае необходимо знать их длину) или символы. При этом нами будут прочитаны также символы, образующие маркер ≪Конец строки≫ (см. пример 30). Соответственно, и наоборот, можно создать файл как двоичный, а прочитать – как текстовый.

Примечание. Двоичный файл, содержащий несимвольную информацию, при просмотре текстовыми редакторами выглядит как нагромождение букв и символов псевдографики. Создать такой файл текстовыми редакторами нельзя.

При программировании операций ввода/вывода с двоичными файлами используют специальные функции, которые работают с двоичными образами данных, сгруппированными в блоки.

Функция ввода из двоичного файла:

size_t fread(void *ptr, size_t size, size_t n, FILE *stream);

Функция вводит информацию из файла в буфер по адресу ptr объемом size*n, где size – размер вводимого блока, а n – количество блоков. В качестве результата функция

возвращает действительно считанное количество блоков. При достижении конца файла функция возвращает 0, а при обнаружении ошибок – -1.

Функция вывода в двоичный файл:

size_t fwrite(void *ptr,size_t size,size_t n,FILE *stream);

Функция выводит информацию из буфера по адресу ptr объемом size*n.

Указанные функции в основном используются в двух вариантах:

а) при работе со структурами:

fread (&myrec,sizeof(myrec),1,f1);

fwrite (&myrec,sizeof(myrec),1,f1);

где myrec – переменная типа структура;

б) при работе с файлом в целом, когда обрабатываемая информация не детализируется, например, при копировании файла:

size_t bufSize=0x200;

char *buffer = new char[bufSize];

fread (buffer,1,bufSize,f2);

fwrite(buffer,1,bufSize,f2);...

delete[] buffer;

Размер буфера при этом, как правило, задается кратным 512 байт.

22) Определение класса, компоненты класса. Ограничение доступа.

В С++, так же как и в других язьпсах программирования, класс - это

структурный тип, используемый для описания некоторого множества объектов

предметной области, имеющих общие свойства и поведение.

class <Имя класса>

{ private: <Внутренние компоненты класса>;

protected: <Защищенные компоненты класса>;

public: <Общедоступные компоненты класса>;

};

В качестве компонентов в описании класса фигурируют поля,

используемые для хранения параметров объектов, и функций, описывающие

правила взаимодействия с ними. В соответствии со стандартной терминологией ООП функции - компоненты класса или компонентные функции можно назвать методами.

Компоненты класса, объявленные в секции private, называются

внутренними. Они доступны только компонентным функциям того же класса и функциям, объявленным дружественными описываемому классу.

Компоненты класса, объявленные в секции protected, называются защищенными. Они доступны компонентным функциям не только данного класса, но и его потомков. При отсутствии наследования интерпретируются как внутренние.

Компоненты класса, объявленные в секции public, называются общими. Они доступны за пределами класса в любом месте программы. Именно в этой

секции осуществляется объявление полей и методов интерфейсной части

класса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]