Форум программистов, компьютерный форум 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, 01:40     Запись и чтение бинарных файлов. Программа крашится при закрытии консольного окна
Имеется задачка:
Написать программу которая будет записывать бинарные данные в файл, а так-же строковые данные типа std::string, считывать их обратно. Функции write() и read()

решил вот так..
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
60
61
62
63
64
65
66
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
 
struct person {
    std::string name; //имя
    int age;          //возраст
    double height;    //рост
};
const char *file = "d://person.max";
 
int main() {
    setlocale(0, "");
    person ps;
    std::ifstream fin;
    std::ofstream fout;
        //показывает содержимое файла при старте
    fin.open(file, std::ios_base::in | std::ios_base::binary);
    if (fin.is_open()) {
        std::cout << "Данные в файле \"person.max\":\n";
        unsigned int kol = 0;
        while (fin.read((char *)&ps, sizeof(ps))) {
            std::cout << kol + 1 << ") " << ps.name 
                << ", возраст " << ps.age 
                << ", рост " << ps.height << '\n';
            kol++;
        }
        fin.close();
    }
    //добавление данных в файл
    fout.open(file, std::ios_base::out | std::ios_base::app | std::ios_base::binary);
    if (!fout.is_open()) {
        std::cerr << "ERROR\n";
        exit(EXIT_FAILURE);
    }
    std::cout << "Введите имя (пустая строка для выхода):\n";
    int i = 0;
    std::getline(std::cin, ps.name);
    while (ps.name.size() > 0) {
        std::cout << "Введите возраст: ";
        std::cin >> ps.age;
        std::cout << "Введите рост: ";
        std::cin >> ps.height;
        fout.write((char *)&ps, sizeof(ps));
        std::cout << "Введите имя (пустая строка для выхода):\n";
        i++;
        std::getline(std::cin, ps.name);
    }
    fout.close();
        //показывает модифицированный файл
    fin.open(file, std::ios_base::in | std::ios_base::binary);
    if (fin.is_open()) {
        std::cout << "Новые данные в файле:\n";
        unsigned int kol = 0;
        while (fin.read((char *)&ps, sizeof(ps))) {
            std::cout << kol + 1 << ") " << ps.name 
                << ", возраст " << ps.age << 
                ", рост " << ps.height << '\n';
            kol++;
        }
        fin.close();
    }
    system("pause");
    return 0;
}
Проблема в том, что программа вроде и работает, а вроде и нет.. Крашится при закрытии консольного окна.. может кто чем просветит?
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru