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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Пример из MSDN не компилируется Dev-C++ http://www.cyberforum.ru/cpp-beginners/thread354514.html
Уважаемые Коллеги, возможно из-за недостатка опыта не могу понять причину возникновения ошибок при компиляции Dev-C++ файла-примера печати окна, взятого из http://support.microsoft.com/kb/186736/ru...
C++ Буквы из текста Дан текст из строчных латинских букв, за которым следует точка. Напечатать: а) первые вхождения букв в текст, сохраняя их исходный порядок; б) все буквы, входящие в текст не менее 2 раз; в) все... http://www.cyberforum.ru/cpp-beginners/thread354510.html
C++ есть решения???
Валя и Вера собрались варить варенье из А кг смородины. По рецепту на 2 кг ягод нужно 3 кг сахара. Валя сказала, что им потребуется С кг сахара, а Вера - что Р кг. Кто из них прав? на языке СИ
Выяснить, имеются ли в матрице ненулевые элементы C++
Дана целочисленная квадратная матрица 15 и 20, выяснить имеются ли в матрице ненулевые элементы, если имеются, то указать индексы всех ненулевъх элементов
C++ Научно-практическая конференция http://www.cyberforum.ru/cpp-beginners/thread354486.html
Ребят меня оправили на конференцию не спросив хочу ли я этого - кроме дипломки еще один гемор вылезет... Тему хоть дали "Применение криптографии в программе для сохранения конфиденциальности...
C++ Ошибка компиляции файла Здравствуйте! Набросал два файла с кодом вроди все нормально, но при компиляции файла String.h получаю следущее No rule to make target 'String.o'. Stop. ??? Не подскажите добрые люди как его... подробнее

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

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

21.09.2011, 15:02. Просмотров 1377. Ответов 6
Метки (Все метки)

не могу прочитать объекты из файла. Сломал голову. Все перепробовал.
Препод отправил гуглить))).
Писать что то вроде пишет? Но что?
А читать при перезапуске программы отказывается. Говорит что в файле (0) объектов.
И ошибка сегментирования (как правило выход за пределы цикла)???

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
129
130
#include<iostream>
#include<cstdlib>
#include<fstream>
using namespace std;
////////////////////////////////////////////
class person
{
  char name[80];
  int age;
  static person* pers[];
  static int n;
 
 
 public:
   void getData()
   {
     cout<<"\n Введите имя: "; cin>>name;
     cout<<" Введите возраст:"; cin>>age;
   }
//////////////////////////
  void showData()
   {
    cout<<"\n Имя:"<<name;
    cout<<"\n Возраст:"<<age;
   }
 
 static void add();
 static void display();
 static void write();
 static void read();
  
};
/////////////////////////
  void person:: display()
   {
    for(int j=0;j<n;j++)
      {
        cout<<"Person #"<<(j+1);
        pers[j]->showData();
        cout<<endl;
      }
  }
 
/////////////////////
  void person:: write()
  { 
    int j;
    cout<<"Идет запись..."<<n<<" человек\n";
    ofstream ouf;
    ouf.open("PERS.DAT",ios::app|ios::binary);
   
 
    for( j=0;j<n;j++)
     {
      ouf.write(reinterpret_cast<char*>(pers[j]),sizeof(person));
     }
   cout<<"Записано"<<j<<"человек"<<endl;
 }
//////////////////
 void person:: read()
 {
  ifstream inf;
  inf.open("PERS.DAT",ios::binary);
  inf.seekg(0);
  cout<<"количество человек "<<n<<endl;
  cout<<"чтение из файла "<<endl;
  int j;
 
  inf.read(reinterpret_cast<char*>(pers[j]),sizeof(person));
 
  while(!inf.eof())
   {
    cout<<"Начало цикла "<<endl;    
    pers[j]=new person;
    inf.read(reinterpret_cast<char*>(pers[j]),sizeof(person));
    cout<<"адрес человека "<<pers[j]<<endl;
    j++;
   }
  cout<<"Идет чтение "<<j<<"человек \n"<<endl;
  
 }    
///////////////////////////
 void person:: add()
 {
  char ch;
   cout<<"Добавить человека(y/n)?";
   cin>>ch;
   while(ch=='y')
     {
      pers[n]=new person;
      pers[n]->getData();
      n++;
      cout<<"сохранить еще человека(y/n)?";
      cin>>ch;
     }
 }
 
 
///////////////////////////////////////////////////////
int person::n;
person* person::pers[100];
 
///////////////////////////////////////////////////////
int main()
{
 char ch;
 while(true)
   {
    cout<<"'a'-добавить человека"
        "\n'd'-вывести сведения"
        "\n'w'-записать все данные в файл"
        "\n'r'-прочитать все данные из файла"
        "\n'x'-выход"
        "\nВаш выбор: ";
     cin>>ch;
   
    switch(ch)
     {
       case'a': person::add(); break;
       case'd':person::display(); break;
       case'w':person::write();   break;
       case'r':person::read();    break;
 
       case'x':exit(0);
       default:cout<<"Неизвестная команда";
     }
   }
  
   return 0;
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru