Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 07.01.2010, 16:46   #1
xVxSeRGxVx
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 42
Печаль проблема при выводе с бинарного файла...

Уважаемые програмисты.... столкнулся с проблемой... работаю с класом Window...
ввожу данные... потом вызываю метод записи в файл fileReadWind :
Код:
void Window :: fileReadWind(Window *t, int count)
{
    ofstream fout(nameOfFile, ios_base :: out | ios_base :: binary);
	
	for (int i=0; i <=count-1; i++)
	{
		fout.write( (char *) &t[i], sizeof t[i]);
	}

	fout.close();    
}
после чего считываю:
Код:
int Window :: fileOutWind(Window *win)
{
	
	
    ifstream fin (nameOfFile, ios_base :: in | ios_base :: binary);
	fin.clear();
	if (!fin)
	{
	    cerr << "Error of open file - " << nameOfFile << endl;
		exit(1);	
	}

	for (int i=0; !fin.eof();i++)
	{
	     fin.read( (char *) &win[i], sizeof win[i]);
	     cout << win[i].name << " " << win[i].type << " " << win[i].center_x << "/" << win[i].center_y << win[i].height << "*" << win[i].weigth << "\n";
и вот сама проблема... после считывания с файла и вывода на экран появляется дополнительная запись, которая конструктором по умолчанию инициализируется...
вот я добавил фото роботы программы:

задавайте вопросы... если что не понятно... надеюсь на Вашу помощь...

Последний раз редактировалось xVxSeRGxVx; 07.01.2010 в 17:09.
xVxSeRGxVx вне форума Ответить с цитированием
Старый 13.01.2010, 19:08   #2
xVxSeRGxVx
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 42
Радость

всё проблему решил сам... ошибка была вот в чём...
при функции записи
Код:
void Window :: fileReadWind(Window *t, int count)
{
    ofstream fout(nameOfFile, ios_base :: out | ios_base :: binary);
	
	for (int i=0; i <=count-1; i++)
	{
		fout.write( (char *) &t[i], sizeof t);
	}

	fout.close();    
}
нада было написать просто , а не sizeof t[i]
и при считывании так же просто sizeof win
Код:
 int Window :: fileOutWind(Window *win)
{
	
	
    ifstream fin (nameOfFile, ios_base :: in | ios_base :: binary);
	fin.clear();
	if (!fin)
	{
	    cerr << "Error of open file - " << nameOfFile << endl;
		exit(1);	
	}

	for (int i=0; !fin.eof();i++)
	{
	     fin.read( (char *) &win[i], sizeof win);
	     cout << win[i].name << " " << win[i].type << " " << win[i].center_x << "/" << win[i].center_y << win[i].height << "*" << win[i].weigth << "\n";
fin.close();
}
xVxSeRGxVx вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при выводе инфо из БД Xeon332 PHP 4 30.12.2009 05:41
глюк при выводе в консоль shurik_7866 Общие вопросы C/C++ 0 07.11.2009 00:30
Скрытие ячеек при выводе на печать Ensoph Microsoft Office Excel 4 04.11.2009 23:42
Проблема при чтении из файла Satorin Общие вопросы Delphi 2 17.12.2008 11:32
Как задать курсив и вид шрифта при выводе на экран? prikolist Помощь студентам 4 20.06.2008 13:54


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS