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

Запись и чтение вектора из файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Народ подскажите, чета я забыл DLL как экспортировать http://www.cyberforum.ru/cpp-beginners/thread632066.html
Вот например есть в DLL код функции: void OpenAbout(HINSTANCE hInst, int cmdMode, HWND hWnds) { .... return; }
C++ Среднее арифметическое и среднее геометрическое двух чисел Даны 2 числа, найти среднее арифметическое с снеднее геометрическое. http://www.cyberforum.ru/cpp-beginners/thread632053.html
C++ Что-то не так в цикле
Цикл пробегает одну строку и после этого программа виснет. for (i = 0; i < img_x - 1; i++) { for(j = 0; j < img_y - 1; j++) { myColor = cvGet2D(img, i, j); r_color = myColor.val; g_color = myColor.val; b_color = myColor.val; x = (r_color + g_color + b_color) / 3;
C++ Разработать программу, чтобы она выводила через запятую все четные числа диапазона
Разработать программу, чтобы она выводила через запятую все четные числа диапазона от 1 до 100, отсортированные в порядке убывания. #include "stdafx.h" #include <conio.h> #include <iostream> int main(int argc, char* argv) { int i; for (i = 1; i <= 100; ++i)
C++ Более простой способ создания форм http://www.cyberforum.ru/cpp-beginners/thread632012.html
Ищу более простой способ создания форм на WinApi без использования ресурсов и.т.п. Может есть какая не будь программа для составления шаблона кодов или ординат объектов размещенных на форме? Сами понимаете если делать программу не визуально подгонять каждую кнопку и выставлять дизайн очень долго и трудоемко, есть идеи, как упростить?
C++ Как отключить? Как отключить использование пространства имён? например: using namespace std; заранее спасибо! подробнее

Показать сообщение отдельно
Флибустьер
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 12

Запись и чтение вектора из файла - C++

02.08.2012, 13:48. Просмотров 1186. Ответов 20
Метки (Все метки)

Здравствуйте! Помогите понять ошибку. Создаю группу, записываю ее в файл (первым в файл записывается непонятный символ). Первый запуск нормальный, файл создается, но при повторном группа дописывается, а вот уже на функции void ReadGroup(char *path, group&g); вылетает ошибка.

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
#include <vector>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <fstream>
#include <iostream>
#include <algorithm>
#include <conio.h>
using namespace std;
 
struct Student
{
   char name [30], surname [30], year [10];
};
 
ostream& operator<<(ostream& os, Student &s)
{
    os<< "\nName-" << s.name << " Surname-" << s.surname << " Year-" << s.year << '\n';
    return os;
}
istream& operator >> (istream& is, Student &s)
{
    char nam [30], surnam [30], yer [10];
    cout << "\nName-";
    is >> nam; 
    cout << "Surame-";
    is >> surnam;
    cout << "Year-";
    is >> yer;
    cout << '\n';
    strcpy_s(s.name,nam);
    strcpy_s(s.surname,surnam);
    strcpy_s(s.year, yer);
    return is;
}
 
class group
{
    vector<Student> m;
    char names[30];
public:
    group();
    ~group() {/*del();*/}
    // Конструктор копирования
    group(Student& L)   { group  temp; temp.add(L);}
    void add(Student s) {m.push_back(s);}
    void del() { m.pop_back ();}
    void del(int pos) { m.erase(m.begin()+pos); }
    void Set (char *nam) { strcpy_s (names, nam);}
    void Sort (group&);
    void Serch(group& L, char *s2);
    void print ()
            {
                for (unsigned int i=0; i < m.size(); i++)
                    {
                        cout << "\nName " << m[i].name << "\nSurname " << m[i].surname << "\nYear "<< m[i].year << '\n'; 
                    }
            }
    int size(){return m.size();}
    Student& operator[](int pos) {return m[pos];}
        
        void WriteGroup(char *path, group&g);
        void ReadGroup(char *path, group&g);
    
};
 
void WriteGroup(char *path, group&g)
    {
        FILE *f=fopen(path, "a+"); //аналог fscanf(f, "%s", str);
        if (!f){puts("Error!"); return;}
        int N=g.size();
            fwrite(&g, sizeof(N), 1,f); 
            
        for (int i=0; i<N; i++)
            {
                fwrite (&g[i].name, sizeof(N), 1,f); fprintf(f, "\t");
                fwrite (&g[i].surname, sizeof(N), 1,f); fprintf(f, "\t");
                fwrite (&g[i].year, sizeof(N), 1,f); fprintf(f, "\n");
            }
        fclose(f);
    }
void ReadGroup(char *path, group&g)
    {
        FILE *f=fopen(path, "r+"); 
        if (!f){puts("Error!"); return;}
        int N=g.size();
        
        fread(&g, sizeof(N), 1,f); //&m - адрес объектаб sizeof(N)- кол-во байтб 1 - кол-вой объектов, f-файл
        printf("Name\tSurname\tYear\n");
        for (int i=0; i<N; i++)
            {
                fread (&g[i], sizeof(N)/4, 1,f); 
                fread (&g[i].name, sizeof(N)/4, 1,f); 
                fread (&g[i].surname, sizeof(N)/4, 1,f); 
                fread (&g[i].year, sizeof(N)/4, 1,f); 
            }
        fclose(f);
 
 
    }
void main ()
{
    Student  first, first1, first2, first3;
    
    strcpy_s(first.name,"Ivanovich");
    strcpy_s(first.surname,"Ivanov");
    strcpy_s(first.year,"22");
    
    strcpy_s(first1.name,"Petr");
    strcpy_s(first1.surname,"Petrov");
    strcpy_s(first1.year,"23");
    
    strcpy_s(first2.name,"Alex");
    strcpy_s(first2.surname,"Alexeev");
    strcpy_s(first2.year,"20");
 
    group gr1;
    gr1.add(first);
    gr1.add(first1);
    gr1.add(first2);
    
    cout << gr1 << '\n';
    
    WriteGroup("E:\\Ra.txt",gr1);
    ReadGroup( "E:\\Ra.txt",gr1);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru