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

Динамический массив объектов класса и считывание двоичных файлов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найдите произведение элементов массива, расположенных после максимального по модулю элемента http://www.cyberforum.ru/cpp-beginners/thread1655915.html
Найдите произведение элементов массива, расположенных после максимального по модулю элемента.
C++ обход папок в многопоточном режиме Помогите реализовать данный код в многопоточном режиме. Заранее спасибо. Я не особо понимаю в чем ошибки, проверьте пожалуйста. inline std::string narrow(std::wstring const& text) { std::locale const loc("Russian"); wchar_t const* from = text.c_str(); std::size_t const len = text.size(); std::vector<char> buffer(len + 1); std::use_facet<std::ctype<wchar_t> >(loc).narrow(from, from +... http://www.cyberforum.ru/cpp-beginners/thread1655913.html
C++ Найти сумму элементов массива, расположенных между первым и последним нулевыми элементами
Написать программу по обработке одномерных массивов. Размеры массивов вводить с клавиатуры№ В консольном приложении предусмотреть возможность ввода данных как с клавиатуры? так и с использованием функции random (). В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов, вычислить: Сумму элементов массива, расположенных между первым и последним нулевыми элементами.
C++ Указатели (Pointers)
Здравствуйте. Решил углубленно изучить указатели. Скачал несколько книг, лекций, тестов именно по указателям. Возник ряд вопросов, поэтому я не стал для каждого вопроса заводить отдельный топик, а решил задать все вопросы здесь. 1. char *pc = "0123456789", c; c = ++*pc; // вызывает ошибку, причем ошибку времени исполнения, компилятор не ругается операторы "префиксный ++" и "*" имеют...
C++ перевод программы из Паскаля в С++ http://www.cyberforum.ru/cpp-beginners/thread1655889.html
var a,b,c:integer; begin read(a,b,c); writeln(a,'+',b,'+',c,'=',a+b+c); writeln(a,'*',b,'*',c,'=',a*b*c); writeln('(',a,'+',b,'+',c,')/3=',(a+b+c)/3:4:3); end.
C++ Где взять решения задач из книги Дейтелов Здраствуйте. Откуда я могу найти решения задач по Дейтел? подробнее

Показать сообщение отдельно
pstoster
0 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 4

Динамический массив объектов класса и считывание двоичных файлов - C++

05.02.2016, 20:53. Просмотров 256. Ответов 7
Метки (Все метки)

Долго бьюсь и не могу понять.
В этом варианте он выдает такую ошибку
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
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
 
class Forms
{
private:
    char clogin[20];
    char cpassword[10];
    int ctype;
public:
    Forms(char login[], char password[], int type)
    {
        strcpy(clogin, login);
        strcpy(cpassword, password);
        ctype = type;
    }
    Forms() {}
    void Print()
    {
        cout << clogin << endl << cpassword << endl << ctype << endl;
    }
};
 
void main()
{
    Forms* cforms;
    cforms = new Forms;
    char login[20], password[10];
    int type = 1, n = 0;
    ifstream forms("forms.bin", ios::binary);
    while (!forms.eof())
    {
        cforms[n] = Forms(login, password, type);
        n++;
    }
    forms.close();
    cout << n;
    for (int i = 0; i < n;i++)
    {
        cforms[i].Print();
    }   
    system("pause");
}
Динамический массив объектов класса и считывание двоичных файлов


В этом варианте он выдает такую ошибку
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
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
 
class Forms
{
private:
    char clogin[20];
    char cpassword[10];
    int ctype;
public:
    void SetClogin( char *login) { strcpy(clogin, login); }
    void SetCpassword(char *password) { strcpy(cpassword, password); }
    void SetCtype(int type) { ctype = type; }
    void Print()
    {
        cout << clogin << endl << cpassword << endl << ctype << endl;
    }
};
 
void main()
{
    Forms* cforms;
    cforms = new Forms;
    char login[20], password[10];
    int type = 1, n = 0;
    ifstream forms("forms.bin", ios::binary);
    while (!forms.eof())
    {
        forms.read((char*)&login, sizeof(login));
        forms.read((char*)&password, sizeof(password));
        forms.read((char*)&type, sizeof(int));
        cforms[n].SetClogin(login);
        cforms[n].SetCpassword(password);
        cforms[n].SetCtype(type);
        n++;
    }
    forms.close();
    cout << n;
    for (int i = 0; i < n;i++)
    {
        cforms[i].Print();
    }   
    system("pause");
}
Динамический массив объектов класса и считывание двоичных файлов

И в обоих версиях почему то по два раза считывает последние данные с двоичного файла.
Кто знает в чем подвох? Уже как только не исправлял и ничего.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru