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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.03.2009, 20:18   #1
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию Структуры и файлы. Проблема с сохранением.

Добрый вечер, "братья по компилятору" В общем суть моей программмы это структуры записать в файл!!! Дело в том, что численные поля записываются нормально и при выводе проблем нет!В то время как при выводе всех структур, тектовые поля у всех одинаковые, такие же как у последней созданной мной структуры!!! вот собственно в этом и есть проблема, вот код толко функций создания и записи и вывода:
Код:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <iomanip.h>
#include <fstream.h>
#include <string.h>
#include <ctype.h>

void menu();
void New_Baze_i_dop();
void Sort_i_vivod();
int MyProverka1();

typedef struct
{
    char* Name;
    char* Avtor;
    int Kol_str;
    int Year;

} Books;

int main ()
{
    menu();
    return 0;
}

void New_Baze_i_dop ()
{
    char* FileName;
    Books book;
    char flag;
    gotoxy (0,0); cout << "Enter to new File's name:" << endl;
    cin >> FileName;
    ifstream reading_file(FileName);
    if (reading_file.good())
    {
	gotoxy(1,0); cout << "Takoi fail suwestvuet" << endl;
	cout << "Hotite ego dopolnit' ?(y/n)" << endl;
	cin >> flag;
	while(flag == 'y')
	    {
		ofstream writeing_file (FileName, ios::app);
		cout << "Enter to name book's" << endl;
		cout.flush();
		cin >> book.Name;
		cout << "Enter to name Avtor's" << endl;
		cout.flush();
		cin >> book.Avtor;
		cout << "Enter to Kol-vo stranic" << endl;
		do
		{
		    book.Kol_str = MyProverka1();
		} while (book.Kol_str == -1);
		cout << "Enter to year of publishing" << endl;
		do
		{
		    book.Year = MyProverka1();
		} while (book.Year == -1);
		writeing_file.write ((char*) &book, sizeof(book));
		writeing_file.close();
		cout << "Hotite prodol)|(it' ?" << endl;
		cin >> flag;
	    }

    }
    else
    {
	reading_file.close();
	ofstream writeing_file (FileName, ios::app);
	if (writeing_file.good())
	    {
		do
		{
		    cout.flush();
		    cout << "Enter to name book's" << endl;
		    cout.flush();
		    cin >> book.Name;
		    cout << book.Name;
		    cout << "Enter to name Avtor's" << endl;
		    cout.flush();
		    cin >> book.Avtor;
                    cout << book.Avtor;
		    cout << "Enter to Kol-vo stranic" << endl;
		    do
		    {
			book.Kol_str = MyProverka1();
		    } while (book.Kol_str == -1);
		    cout << "Enter to year of publishing" << endl;
		    do
		    {
		       book.Year = MyProverka1();
		    } while (book.Year == -1);
		    writeing_file.write ((char*) &book, sizeof(book));
		    cout << "Hotite prodol)|(it' ?" << endl;
		    cin >> flag;
		} while(flag == 'y');
	     }
	else cout << "Error to open " << FileName << "for write" << endl;
	writeing_file.close();
    }
}

void Sort_i_vivod ()
{
     char* FileName;
     Books book, Massiv[100], *pMassiv = &Massiv[0];
     int i = 0, kol_books = 0, n;
     cout << "Enter to file's name " << endl;
     cout.flush();//cin.ignore('\n',1);
     cin >> FileName;
     ifstream reading_file(FileName, ios::beg);
     if (reading_file.good())
     {
	 while (!reading_file.eof())
	 {
	     reading_file.read ((char*) &book, sizeof (book));
	     *pMassiv = book;
	     i++;
	     pMassiv++;
	 }
	 reading_file.close();
     }
     else exit(0);
     kol_books = i;
     for (i = 0; i < kol_books; i++)
     {
	 cout << Massiv[i].Name << endl;
	 cout << Massiv[i].Avtor << endl;
	 cout << Massiv[i].Kol_str << endl;
	 cout << Massiv[i].Year << endl;
     }
    getch();
}

int MyProverka1 ()
{
    short int i = 0, Kol = 0;
    char* Str;
    cin >> Str;
    if (strlen(Str) > 1)
    {
	if ((isdigit(Str[i])) || (Str[i] == '-'))
	{
	    for (i = 1; i < strlen(Str); i++)
	    {
		if ((Str[i] == '.') || (isdigit(Str[i])))
		{
		    if (Str[i] == '.')
		    {
		       Kol++;
		       if (Kol > 1) return -1;
		    }
		    return atoi(Str);
		}
		else return -1;
	    }
	}
    }
    else if (isdigit(Str[0])) return atoi(Str);
	 else return -1;
}
за раннее спасибо!!!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума
Старый 18.03.2009, 15:57   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Код:
char* FileName;
//..................
cin >> FileName;
А память под FileName кто выделять будет?
Код:
cin >> book.Name;
тоже самое.
структуру лучше так переделай
Код:
typedef struct
{
    char Name[256];
    char Avtor[256];
    int Kol_str;
    int Year;

} Books;
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума
Старый 20.03.2009, 17:35   #3
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Большое спасибо имеено так я и переделал!!!!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПРоблема с передачей и сохранением файлов с помощью indi компонентов albatros Работа с сетью в Delphi 4 18.02.2009 22:39
Пишу программу которая ищет файлы на компьютере ! Как лучше организовать структуры данных ? asked86 Общие вопросы Delphi 13 14.12.2008 19:33
Проблема с сохранением данных в другую таблицу HAMMAN Помощь студентам 1 26.05.2008 08:30
Проблема с сохранением БД! Disday БД в Delphi 4 21.04.2008 00:54
Проблема структуры else в Delphi jora-objora Помощь студентам 3 03.02.2008 18:10