Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2014, 02:14   #1
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию Файлы

Код:
#include <fstream> 
#include <iostream>
#include <windows>
using namespace std;
///////////////////////////////////////////////////////////
class person // êëàññ person
{
  protected:
    char name[80]; 
    int age; 
  public:
    void getdata()    
   {
      cout << "\n Vvedite imya: "; cin >> name;
      cout << " Vvedite vozrast: "; cin >> age;
    }
    void showData() 
   {
      cout << "\n Imya: " << name;
      cout << "\n Vozrast: " << age;
   }
};
/////////////////////////////////////////////////////////// 
int main()
{
 char ch;
 fstream file;
 person p;
 file.open("GROUP.DAT", ios::app | ios::out | ios::in | ios::binary);
 do
 {
   cout << "Vvod infy: ";
   p.getdata();
   file.write(reinterpret_cast<char*>(&p), sizeof(p));
   cout <<"Again? (y/n): "; cin >> ch;
 } while (ch == 'y');
 file.seekg(0);

 file.read(reinterpret_cast<char*>(&p), sizeof(p));
 while (!file.eof())
 {
   cout << "Infa: ";
   p.showData();
   file.read(reinterpret_cast<char*>(&p), sizeof(p));
 }
 cout << endl;
 system ("pause");
 return 0;
}
Всем привет! Что с последним циклом не так - шурует до бесконечности?
igoreshka3333 вне форума Ответить с цитированием
Старый 02.10.2014, 08:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
file.read(reinterpret_cast<char*>(& p), sizeof(p));
Что-то меня смушает такая запись... Считать из файла 4 байта и записать их в char name[80];...
Где логика?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2014, 10:50   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,724
По умолчанию

А файл то открылся? Проверки на еоф не всегда достаточно.
p51x вне форума Ответить с цитированием
Старый 02.10.2014, 13:13   #4
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что-то меня смушает такая запись... Считать из файла 4 байта и записать их в char name[80];...
Где логика?
Это пример из книги Лафоре, пытаюсь разобраться, Вас и прошу помочь) Тем юолее пример то с ошибкой...
igoreshka3333 вне форума Ответить с цитированием
Старый 02.10.2014, 13:35   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы инкапсулировал считывание в класс.
Пишу с коленки, не проверял:
Код:
// dd.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <fstream> 
#include <iostream>
#include <windows.h>
using namespace std;
///////////////////////////////////////////////////////////
class person // êëàññ person
{
  protected:
    char name[80]; 
    int age; 
  public:
    void getdata() {
      cout << "\n Vvedite imya: "; cin >> name;
      cout << " Vvedite vozrast: "; cin >> age;
    }
	void getdata(fstream file) {
		file.read(&name[0],sizeof(name));
        file.read((char*)&age,sizeof(age));
    }
	void putdata(fstream file) {
		file.write(&name[0],sizeof(name));
        file.write((char*)&age,sizeof(age));
    }
   void showData() 
   {
      cout << "\n Imya: " << name;
      cout << "\n Vozrast: " << age;
   }
};

int _tmain(int argc, _TCHAR* argv[])
{
 char ch;
 fstream file;
 person p;
 file.open("GROUP.DAT", ios::app | ios::out | ios::in | ios::binary);
 do
 {
   cout << "Vvod infy: ";
   p.getdata();
   p.putdata(file);
   cout <<"Again? (y/n): "; cin >> ch;
 } while (ch == 'y');
 file.seekg(0);

 file.read(reinterpret_cast<char*>(&p), sizeof(p));
 while (!file.eof())
 {
   cout << "Infa: ";
   p.getdata(file);
   p.showData();
 }
 cout << endl;
 system ("pause");
 return 0;

}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2014, 13:50   #6
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я бы инкапсулировал считывание в класс.
Не понял, но все равно спасибо за помощь) По ходу изучения разберусь!
igoreshka3333 вне форума Ответить с цитированием
Старый 02.10.2014, 14:20   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не понял
Имеется ввиду вынести чтение\запись в метод класса.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2014, 19:56   #8
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я бы инкапсулировал считывание в класс.
Пишу с коленки, не проверял:
Код:
   p.putdata(file);
Компилятор пишет, что не может сгенерировать конструктор копирования для класса ios...
igoreshka3333 вне форума Ответить с цитированием
Старый 02.10.2014, 23:54   #9
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Кстати разобрался со своим примером без икапсуляции.
просто надо файл закрыть

Код:
file.close();
Потом снова открыть

Код:
file.open("GROUP.DAT", ios::in | ios::binary);
и т. д.
igoreshka3333 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы: Составить программу, которая перепишет фамилии в отдельные файлы в соответствии с названием группы Гульвира Помощь студентам 1 23.05.2013 10:04
Очень нужно сделать задачу в Delphi(Типизированные файлы. файлы записи) Vitalik1 Помощь студентам 1 16.12.2011 10:38
Не сохраняет файлы (Создает файлы пустышки) Rock231 Помощь студентам 2 25.12.2010 12:31
Файлы данных.Типизированные файлы. вылка Помощь студентам 6 17.05.2010 15:42
два вредных вопроса:про асю и прикриплёные файлы файлы steck Свободное общение 3 17.06.2007 14:53