Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование).docx
Скачиваний:
32
Добавлен:
28.10.2018
Размер:
52.68 Кб
Скачать

12)Обработка двоичных файлов . Последовательный и произвольный доступ.

Двоичные файлы в формате *.dat. Хранение информации в двоичном файле позволяет существенно ускорить время считывания и записи. Существует 2 способа доступа к элементам двоичных файлов : последовательный и произвольный.

Последовательный : использование как правило для перебора всех данных хранящихся в файле . Заполнение пустых файлов так же возможно только в последовательном . Для открытия и закрытия двоичных файлов используют функции fopen и fclose . Но не всем режимам доступа следует добавлять букву b . Для записи в файл используется функция fwrite , чей прототип находится в файле <stdio.h> . Заголовок функции имеет вид : size_t fwrite(const void *ptr,size_t size. Size_t n,FILE *stream)

Параметры :

Void *ptr – указатель на исходные данные , записываемые в FILE

Size_t size – размер в байтах одного элемента данных .

Size_t n – число записываемых в файл элементов данных , размером size байт каждый.

File *stream – указатель на файловый поток открытых в двоичном режиме .

Void main ()

{FILE *giena;

Int mass[100];

Giena=fopen(“ttt.dat”,”wb”);

For (int i=0;i<100;i++)

Mass[i]=i*I;

Fwrite(mass,sizeof(int),100,giena);

Fclose(giena);}

2)Произвольный доступ.

Организация произвольного доступа к компонентам файла позволяет считывать значения из любой позиции файла , а так же записывать новую информацию в любое место в файле . Все компоненты файлов с произвольным доступом должны иметь одинаковую длину . Для изменения места файла , откуда будет производиться операция чтения или записи служит функция fseek. Ее прототип содержится в файле <stdio.h> , а заголовок имеет вид : int fseek(File *stream,long offset,intwhence)

Параметры :

File *stream – указатель на открытый файловый поток .

Long offset – число байтов , на которое нужно перемещения в обратную сторону offset должен быть отрицанием .

Int whence – указатель на положение точки отсчета от которого будет происходить перемещение файлового указателя .

Void main ()

{FILE *giena;

Int x;

Giena=fopen(“ttt.dat”,”rb”);

Fseek (giena,25*sizeof(int),SEEK_SET);

Fread (&x,sizeof(int),1,giena);

Printf (“Прочитано 25е число:%d\n”,x);

Fclose(giena);}

13)Аргументы используемые по умолчанию .-

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

Void otchisl (char *gruppa,int n=26,int k=0);

Oychisl (“i-2-4”);

14)Использование ссылок .

В си++ используется видоизмененная форма указателя , называемая ссылкой . Для ссылки не требуется дополнительного пространства памяти , так как она является по сути другим именем переменной . Для описания ссылки используется :

Int &k;

Main ()

{int t;

Int &sh=t;}

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

#include <stdio.h>

Const int j=10;

Int mass[j];

Int &aaa (int i)

{return mass[i];}

Void Main ()

{for (int i=1;i<j;i++)

Aaa(i)=i*I;

For (i=1;i<j;i++)

Printf (“mass[%d]=%d\n”,I,aaa(i));

Ссылка может быть использована как тип возвращаемой функции , что позволит «присваивать функции значение».