Форум программистов, компьютерный форум CyberForum.ru

Запись и чтение бинарных файлов. Программа крашится при закрытии консольного окна - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подскажите пример подключения lib http://www.cyberforum.ru/cpp-beginners/thread1252627.html
Добрый вечер. Можно пример какой-нибудь простенькой программы (например сложение чисел, или вычисление площади треугольника), в которой main.cpp отвечает за ввод и вывод, а в dop.lib реализуется сам метод. И как это все в кучу складывается.
C++ Перегрузить operator* Подскажите, пожалуйста, как использовать operator* в void main в данной программе по аналогии с operator-> Не разобрался полностью в синтаксисе. #include <iostream> using namespace std; class A { public: http://www.cyberforum.ru/cpp-beginners/thread1252616.html
C++ Вернуть текстовое представление уравнения в виде строки
последний пункт задания лабы: Вернуть текстовое представление уравнения в виде строки (char или wchar_t). уравнение такое (x^2+y^2-4a^2)^3=108a^4y^2
Программа не записывает данные в файл C++
Программа не записывает данные в файл помогите исправить #include<iostream> #include <stdio.h> #include <stdlib.h> #include<iomanip> #include<windows.h> using namespace std; struct stud {
C++ Объясните как работает программа, которая заменяет 2 и больше подряд идущих пробела на один http://www.cyberforum.ru/cpp-beginners/thread1252598.html
Всем доброго времени суток, друзья. Прошу обьяснить мне как работает данная программа, потому как сам не могу додуматься. #include <stdio.h> main () { int c, p; p = 0; while ((c = getchar()) != EOF) { if (c != ' ') p=0;
C++ Определить, есть ли в строке St изображения нечетных чисел Определить, есть ли в строке St изображения нечетных чисел. подробнее

Показать сообщение отдельно
trev
 Аватар для trev
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 13
08.09.2014, 14:43  [ТС]     Запись и чтение бинарных файлов. Программа крашится при закрытии консольного окна
Ilot, Мы не ищем легких путей
а вообще, инфу принял, буду разбираться
всем спс <3

Добавлено через 5 часов 8 минут
Выручайте
С записью в файл, вроде, все ок..
а вот с чтением из файла проблемы =\
P.S. Переделал под ООП.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//Person.h
#include <string>
#include <iostream>
#include <fstream>
#include <cstring>
#pragma warning(disable : 4996)
 
const char *file = "d://person11.bin";
 
class Person {
    std::string name;
    int age;
    double height;
public:
    //конструкторы
    explicit Person(const std::string &name_, int age_, double height_)
        : name(name_), age(age_), height(height_) { }
    Person(const Person &ps) 
        : name(ps.name), age(ps.age), height(ps.height) { }
    //методы bin_write и bin_read
    void bin_write() {
        std::ofstream fout(file, 
            std::ios_base::out | std::ios_base::app | std::ios_base::binary);
        if (!fout.is_open()) {
            std::cerr << "ERROR\n";
            exit(EXIT_FAILURE);
        }
        else {
            char *cstr = new char[name.length() + 1];
            std::strcpy(cstr, name.c_str());
            fout.write((char *)&cstr, sizeof(cstr));
            fout.write((char *)&age, sizeof(age));
            fout.write((char *)&height, sizeof(height));
            delete[] cstr;
            fout.close();
        }
    }
    void bin_read() {
        std::ifstream fin;
        fin.open(file, std::ios_base::in | std::ios_base::binary);
        if (fin.is_open()) {
            std::cout << "Данные в файле \"person2.max\":\n";
            unsigned int kol = 0;
            char *cstr = new char[name.length() + 1];
            while (!fin.eof()) {
                fin.read((char *)&cstr, sizeof(cstr) * CHAR_BIT);
                std::cout << kol + 1 << ") " << cstr;
                fin.read((char *)&age, sizeof(age));
                std::cout << ", возраст " << age;
                fin.read((char *)&height, sizeof(height));
                std::cout << ", рост " << height << '\n';
                kol++;
            }
            fin.close();
        }
    }
    //деструктор
    ~Person() { }
};
 
Текущее время: 18:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru