Разделы презентаций


Работа с двоичными файлами

Содержание

Файлы по принципам работы делятся на:Текстовые Двоичные

Слайды и текст этой презентации

Слайд 1Работа с двоичными файлами



С++

Работа с двоичными файламиС++

Слайд 2Файлы по принципам работы делятся на:
Текстовые
Двоичные

Файлы по принципам  работы делятся на:Текстовые Двоичные

Слайд 3Текстовые файлы
Позволяют обрабатывать информацию последовательно, от начала до конца
Новую информацию

можно добавлять только в конец файла (или перезаписать файл полностью)
Содержимое

файла можно отредактировать в текстовом редакторе
Текстовые файлыПозволяют обрабатывать информацию последовательно, от начала до концаНовую информацию можно добавлять только в конец файла (или

Слайд 4Бинарные (двоичные) файлы Интерпретация таких файлов возлагается на специализированные программные средства


Это файлы, в которых информация хранится в двоичном виде, то

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

Бинарные (двоичные) файлы Интерпретация таких файлов возлагается на специализированные программные средства Это файлы, в которых информация хранится

Слайд 5Двоичные файлы
Имеют расширения dat, bin, db
Обрабатываются по компонентам
Имеют как последовательный,

так и прямой доступ к компонентам
Компонентами файла являются данные определенного

типа
На каждую компоненту выделяется определенное количество байт (в соответствие с типом)
Первая компонента следует с нулевого байта от начала файла
Двоичные файлыИмеют расширения dat, bin, dbОбрабатываются по компонентамИмеют как последовательный, так и прямой доступ к компонентамКомпонентами файла

Слайд 6Открытие двоичного файла для чтения :
ifstream fs;
fs.open("file.dat", ios::binary | ios::in

| ios::nocreate );
if (!fs) {
cout

return 1;
}
Эта команда «перематывает» файл в начало
Указатель файла устанавливается на начало файла
Если файл не найден, возникает исключение (ошибка выполнения)

Открытие двоичного файла для чтения :ifstream fs;fs.open(

Слайд 7Открытие двоичного файла для записи:
ofstream fs;
fs.open("file.dat", ios::binary);

Эта команда «перематывает» файл

в начало со стиранием информации
Указатель файла устанавливается на начало файла
Если

файл не был создан, то он создается
Открытие двоичного файла для записи:ofstream fs;fs.open(

Слайд 8Режимы открытия двоичного файла в языке Си:
Чтения (режим rb)
Запись (режим

wb)
Чтения и записи (режим r+b)
Записи и чтения (режим w+b)



Режимы открытия двоичного файла в языке Си:Чтения (режим rb)Запись (режим wb)Чтения и записи (режим r+b)Записи и чтения

Слайд 9Пример:
FILE *f1;
f1 = fopen("file1.bin","rb");
с проверкой открытия:
FILE *f1;
if ((f1 = fopen("file1.bin","rb"))==NULL)

{
printf("Ошибка открытия файла!");
return 1;

}

Пример: FILE *f1;f1 = fopen(

Слайд 10Режимы открытия двоичного файла в языке С++:
Чтения (ios::in)
Запись (ios::out)
Чтения и

записи (ios::in | ios::out)
Записи и чтения (ios::out| ios::in)


Режимы открытия двоичного файла в языке С++:Чтения (ios::in)Запись (ios::out)Чтения и записи (ios::in | ios::out)Записи и чтения (ios::out|

Слайд 11Запись в двоичный файл осуществляется по одной компоненте:

ofstream fs;
fs.open("file.dat", ios::binary |

ios::out);
temp = rand() % 700 - 200;
fs.write(&temp, sizeof(int));

Значение переменной temp

записывается в файл вместо компоненты, на которую настроен указатель файла;
Указатель файла передвигается на следующую компоненту.
Запись в двоичный файл осуществляется по одной компоненте:ofstream fs;fs.open(

Слайд 12Чтение из двоичного файла
Осуществляется по одной компоненте:
ifstream ifs;
ifs.open("file.dat",

ios::binary | ios::in);
ifs.read((char *)&temp, sizeof(int));


Одна компонента (на которую настроен указатель

файла) считывается в переменную temp;
Указатель файла передвигается на следующую компоненту.
Чтение из двоичного файлаОсуществляется по одной компоненте:  ifstream ifs;ifs.open(

Слайд 13Можно считывать двоичный файл последовательно:

ifstream ifs;
ifs.open("file.dat", ios::binary | ios::in);
while (!ifs.eof())
{
ifs.read((char

*)&temp, sizeof(int));
cout

Можно считывать двоичный файл последовательно:ifstream ifs;ifs.open(

Слайд 14Режим прямого доступа для двоичных файлов
fs.fseek(n*sizeof(x), fs.beg);
n – номер

компоненты, на которую надо настроить указатель файла
fs.fseek(0, fs.end);

Режим прямого доступа для двоичных файловfs.fseek(n*sizeof(x), fs.beg); n – номер компоненты, на которую надо настроить указатель файлаfs.fseek(0,

Слайд 15Чтение компоненты с заданным номером:
int i, temp;
ifstream ifs;
ifs.open("file.dat", ios::binary |

ios::in | ios::out );
cin>>i;
ifs.seekp(i * sizeof(int), ifs.beg);
ifs.read((char *)&temp, sizeof(int));
cout


Слайд 16Запись данных с заданной позиции:
int i, temp = 100;
ifstream ifs;
ifs.open("file.dat",

ios::binary | ios::in | ios::out );
cin>>i;
ifs.seekp(i * sizeof(int),

ifs.beg);
ifs.write((char *)&temp, sizeof(int));
cout<

Слайд 17Работа с двоичным файлом
Открытие файла для записи, создание файла в

программе
Запись в файл компонент определённого типа
Закрытие файла (сохранение)
Открытие файла для

чтения (либо чтения и записи)
Чтение информации из файла в режиме последовательного или прямого доступа, поиск и выборка данных
Может быть запись измененной информации в любое место файла
Работа с двоичным файломОткрытие файла для записи, создание файла в программеЗапись в файл компонент определённого типаЗакрытие файла

Слайд 18Открытие файла структур:
struct Tovar
{ char name[40];
float pay;
}

 
void main()
{
ifstream fs;
fs.open("file.dat", ios::binary | ios::in | ios::nocreate );
if (!fs)

{
cout<<"Ошибка открытия файла!";
return 1;
}

Открытие файла структур:struct Tovar{ char name[40];	  float pay; } 	 void main(){	ifstream fs;	fs.open(

Слайд 19Чтение и выборка данных:
Tovar T = new Tovar();
while

(! fs.eof()) {
ifs.read((char *)&T, sizeof(T));
if (T.pay > 30 000)
cout

Чтение и выборка данных: Tovar T = new Tovar(); while (! fs.eof()) 	{	ifs.read((char *)&T, sizeof(T));	if (T.pay >

Слайд 20Задача 1
Заполнить бинарный файл случайными целыми числами. Подсчитать

количество четных по значениям чисел и какой процент они составляют

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

Слайд 21Математическая формулировка:
Необходимо открыть исходный файл для записи и заполнить его

целыми числами при помощи генератора случайных чисел.

Затем открыть файл для

чтения и считывая его компоненты в цикле, проверять их на четность.

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

Слайд 22Алгоритм

Алгоритм

Слайд 23Текст программы:
void main()
{
srand(time(NULL));
int x;
ofstream F;
F.open("file.dat",

ios::binary);
for (int i=0; i

x = rand() % 100 - 50;
F.write(&x, sizeof(int));
cout< }
F.close();
Текст программы:void main(){  srand(time(NULL)); int x; ofstream F; F.open(

Слайд 24Окончание программы:
int k = 0;
ifstream F1;
F1.open("file.dat", ios::binary | ios::in |

ios::out );
while (! F1.eof()) {
F1.read((char *)&x, sizeof(int));
if (x%2 ==

0) k++;
}
float P = (float) k/20 * 100;
cout<<"Процент "<F1.close();
}
Окончание программы:int k = 0;ifstream F1;F1.open(

Слайд 25Задача 2
Заполнить бинарный файл числами, вводимыми с клавиатуры.

Количество компонент файла задать по желанию пользователя.
Удвоить компоненты файла с

четными номерами.
Вывести на экран ещё раз содержимое файла.
Задача 2  Заполнить бинарный файл числами, вводимыми с клавиатуры. Количество компонент файла задать по желанию пользователя.	Удвоить

Слайд 26Алгоритм

Алгоритм

Слайд 27Текст программы:
void main()
{
int y, n;
ofstream F1;
F1.open("file.dat",

ios::binary);
coutn;
for (int i=0; i

i++) {
cin>>y;
F1.write(&y, sizeof(int));
}
F1.close();

Слайд 28ifstream F2;
F2.open("file.dat", ios::binary | ios::in | ios::out );
for (int i=0;

i

2;
F2.seekp(i * sizeof(int), F2.beg);
F2.write((char *)&y, sizeof(int));
}
}
F2.close();
}

ifstream F2;F2.open(

Слайд 29Домашнее задание задача
Заполнить файл целыми числами, вводимыми с клавиатуры, окончание работы

- ввод числа 0.
Вычислить сумму положительных компонент, стоящих после первого

отрицательного значения.
Полученную сумму записать вместо первой отрицательной компоненты.
Домашнее задание задачаЗаполнить файл целыми числами, вводимыми с клавиатуры, окончание работы - ввод числа 0.Вычислить сумму положительных

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика