Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СиАОД_Тычинина.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Значения режимов открытия.

Режим

открытия

Назначение

ios::app

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

ios::ate

Располагает файловый указатель в конце файла.

ios::in

Указывает открыть файл для ввода.

ios::nocreate

Если указанный файл не существует, не создавать файл и возвратить ошибку.

ios::noreplace

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

ios::out

Указывает открыть файл для вывода

ios::trunc

Сбрасывает (перезаписывает) содержимое существующего файла.

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

ifstream output_file("FIlename.EXT", ios::out | ios::noreplace);

Выполнение операций чтения и записи

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

input_file.read(buffer, sizeof(buffer)) ;  output_file.write(buffer, sizeof(buffer));

Например, следующая программа использует функцию write для вывода содержимого структуры в файл EMPLOYEE.DAT:

#include <iostream>

#include <fstream>

using namespace std;

void main(void) {

setlocale(LC_CTYPE,"RUS");

struct employee {

char name[64];

int age;

float salary;

}

worker = { "Джон Дой", 33, 25000.0};

ofstream emp_file("EMPLOYEE.DAT") ;

emp_file.write((char *) &worker, sizeof(employee));

}

Функция write обычно получает указатель на символьную строку. Символы (char *) представляют собой оператор приведения типов, который информирует компилятор, что вы передаете указатель на другой тип. Подобным образом следующая программа использует метод read для чтения из файла информации о служащем:

#include <iostream>

#include <fstream>

using namespace std;

void main(void) {

setlocale(LC_CTYPE,"RUS");

struct employee {

char name [64] ;

int age;

float salary;

} worker = { "Джон Дой", 33, 25000.0 };

ifstream emp_file("EMPLOYEE.DAT");

emp_file.read((char *) &worker, sizeof(employee));

cout << worker.name << endl;

cout << worker.age << endl;

cout << worker.salary << endl;

}

Порядок выполнения работы

  1. Ознакомьтесь с теоретическим материалом и в соответствии с ним создайте новый проект.

  2. Разберите все задачи теоретической части и проверьте их работоспособность в Visual C++.

  3. Сделайте задание для самостоятельного выполнения в соответствии с номером варианта.

  4. Напишите отчет в соответствии с требованиями, приведенными на стр. 20.

  5. Потренируйтесь отвечать на контрольные вопросы.