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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2012, 10:40   #1
mcBottle
Новичок
Джуниор
 
Регистрация: 12.04.2012
Сообщений: 2
Стрелка Работа с базой данных(Чтение и запись)

Ужо не могу...и так и эдак пробовал, но всё равно вылетает и при вводе и при выводе...Подскажите в чем дело плиз
Код:
#include <iostream>
/*
                       Структура TRAIN с полями:ok
                         -   название пункта назначения;ok
                         -   номер поезда;ok
                         -   время отправления.
                       Действия с файлом структур:
                         -   сортировка записей в файле по возрастанию времени отправ-                                    -                            ления поездов и его вывод на экран компьютера;
                         -   определение и вывод на экран записей, в которых пункт назна-
                             чения совпадает с названием вводимым с клавиатуры, либо 
                             сообщения об отсутствии таковых.
*/
#include <windows.h>
#include <conio.h>
 using namespace std;
typedef struct TRAIN {
    char  *name;
    int   nomer;
    int  time[2];
} TRAIN, *PTRAIN, *LPTRAIN;
 
bool ReadBD(char *fPath, PTRAIN pTRAIN);
bool WrieBD(char *fPath, PTRAIN pTRAIN);
 
void p1();
void p2();
 
void main()
{
    cout<<"\tMenu\r\n";
    cout<<"1 - zapis' dannih v fail\r\n";
    cout<<"2 - chtenie iz fila\r\n";
    cout<<"Dlya vihoda nazhmite luboi simvol\r\n";
    int key;
	cin>>key;
    bool repeat = false;
    switch(key)
    {
    case 1:repeat = true;p1();break;
    case 2:repeat = true;p2();break;
    default : break;
    }
    if(repeat)
        main();
}
 
bool ReadBD(char *fPath, PTRAIN pTRAIN)
{
    FILE *f;
        fscanf(f,"%s",pTRAIN->name);
        fscanf(f,"%i",&pTRAIN->nomer);
		for(int i=0;i<2;i++)
        fscanf(f,"%i  ",pTRAIN->time[i]);
        fclose(f);
		return 0;
}
 
bool WrieBD(char *fPath, PTRAIN pTRAIN)
{
    FILE *f;
        fprintf(f,"%s\r\n",pTRAIN->name);
        fprintf(f,"%i\r\n",pTRAIN->nomer);
		for(int i=0;i<2;i++)
        fprintf(f,"  %i\r\n",pTRAIN->time[i]);
        fclose(f);
		return 0;
}
 
void p1()
{
    cout<<"Zapis' structuri v file\r\n";
    PTRAIN pTRAIN  = (PTRAIN)malloc(sizeof(TRAIN));
    pTRAIN->name  = (char *)malloc(MAX_PATH);
    char *chBuf = (char *)malloc(MAX_PATH);
    cout<<"Vvedite punkt naznachenija: "<<endl;
    cin>>pTRAIN->name;
    
    cout<<"Vvedite Nomer poezda    : "<<endl;
    cin>>pTRAIN->nomer;

    cout<<"Vvedite vremja cherez probel  : "<<endl;
	for(int i=0;i<2;i++)
    cin>>pTRAIN->time[i];
    cout<<"Vvod okonchen\r\n";
    if(!WrieBD("C:\\BD.txt",pTRAIN))
        cout<<"Oshibka zapisi fila %s\r\n","C:\\BD.txt";
    free((void *)pTRAIN->name);
	free((void *)pTRAIN->nomer);
	for(i=0;i<2;i++)
    free((void *)pTRAIN->time[i]);
    free((void *)pTRAIN);
    free((void *)chBuf);

}
 
void p2()
{
    printf("Chtenie structuri iz fila\r\n");
    PTRAIN pTRAIN = (PTRAIN)malloc(sizeof(TRAIN));
    pTRAIN->name  = (char *)malloc(MAX_PATH);
    if(!ReadBD("C:\\BD.txt",pTRAIN))
        printf("Oshibka chteniya fila %s\r\n","C:\\BD.txt");
    else
    {
        printf("Chtenie yspeshno. prosmotr structuri\r\n");
        printf("Punkt naznachenija : %s\r\n",pTRAIN->name);
        printf("Nomer poezda       : %i\r\n",pTRAIN->nomer);
		for(int k=0;k<2;k++)
        printf("Vremjz otbitija    : %i\r\n",pTRAIN->time);
    }
}
mcBottle вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с базой данных Aleksandra1990 C++ Builder 0 04.05.2012 22:36
Работа с базой данных Dizark Помощь студентам 1 01.03.2008 20:30