Чтение и запись информации в бинарный файл

Мне необходимо выполнить задание:

Тема: "Бинарные файлы. Файл из структур"

Для каждого из вариантов задания необходимо разработать следующие функции: 1. Создание файла. 2. Добавление элемента в конец файла. 3. Вывод содержимого файла на экран. 4. Удаление элемента из файла: - элемента с заданным номером; - элемента с заданным ключом. 5. Упорядочивание элементов в файле по выбранному признаку. Методы сортировки: 1. пузырьком; 2. перемешиванием; 3. вставками; 4. подсчетом; 5. слиянием; 6. выбором; 7. Шелла;

  1. «Владелец автомобиля»: фамилия; имя; отчество; номер телефона; домашний адрес (почтовый индекс,страна, область, район, город, улица, дом, квартира) марка автомобиля; номер автомобиля; номер техпаспорта.

Пытаюсь найти информацию на данную тему. Насколько я понял, бинарный файл отличается от обычного текстового файла тем, что в бинарном вместо значения переменной записывается бинарный код переменной. Мне довелось делать задание с текстовым файлом и структурой до этого. По сути, я должен сделать то же самое, что и с обычным файлом, только записывать не значения, а бинарные коды. При выполнении функции я думаю следует проводить действия над переменными, как и обычно, просто после выполнения записывать результат в файл в виде кода и затем выводить на экран содержимое файла. Но что-то мне кажется, что это как-то странно. И не могу понять, прав я или нет. Что вы думаете на этот счёт?

На эту тему свежей информации не нашёл. Поэтому пришлось довольствоваться вот этим:

#include <iostream> //Для работы с клавиатурой
#include <fstream> //Для работы с файловыми потоками
using namespace std;

void main()
{
    int y = 0; //Y будем записывать в файл
    int x = 0; //X будем считывать из файла

    cout << "Y = "; cin >> y; //Вводим число, которое нужно сохранить в файл
    ofstream out("File.txt",ios::binary|ios::out); //Открываем файл в двоичном режиме для записи
    out.write((char*)&y, sizeof y); //Записываем в файл число y
    out.close(); //Закрываем файл

    cout << "x = " << x << endl; //Показываем X до его изменений

    ifstream in("File.txt",ios::binary|ios::in); //Открываем файл в двоичном режиме только для чтения
    in.read((char*)&x, sizeof x); //Читаем оттуда информацию и запоминаем её в X
    in.close(); //Закрываем файл

    cout << "x = " << x << endl; //Показываем X после изменения
    system("PAUSE");
}

Это из статьи 2012 года. Я вставил этот код в Visual Studio 2019.

После запуска программы ввёл число 5 для переменной y.

В файле получил вертикальную черту и три треугольника с вопросительным знаком.

В чём же проблема?


Ответы (0 шт):