Добрый вечер!!! Возникает проблема при считывании данных из файла!!! Запись идет нормально!!! Вывод осуществляется функцией input_file()...кто знает, подскажите, пожалуйста!!!
Код:
//struct_1.h
#include"iostream"
#include"fstream"
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include"iomanip"
#include <io.h>
using namespace std;
const int L=30;
struct building
{
char name[L];
char F[L];
int O;
char Vs[L];
char K[L];
int sh;
void input_file();
void outputfile();
void alfsort();
void sohranenie();
void sort_chisl_2();
void sort_chisl_1();
void sort_chisl_3();
void sort_chisl_4();
void add();
void udalenie();
void redaktirovanie();
void input();
void poisk();
void Vivod();
}A;
Код:
//сама программа
#include "struct_1.h"
#include <iostream>
using namespace std;
struct spisok
{
building b;
spisok* prev;
spisok* next;
}*start, *last, *p, *s;
void main()
{
setlocale(0,"");
int pm;
while(1)
{cout<<endl;
cout<<" 1.Чтение из файла "<<endl;
cout<<" 2.Открытие файла "<<endl;
cout<<" 3.Сортировка по алфавиту"<<endl;
cout<<" 4.Запись данных в файл "<<endl;
cout<<" 5.Сортировка по имени "<<endl;
cout<<" 6.Сортировка по количеству стипендии "<<endl;
cout<<" 7.Сортировка по факультету "<<endl;
cout<<" 8.Сортировка по количеству членов семьи "<<endl;
cout<<" 9.Поиск по полю "<<endl;
cout<<" 10.Добавление записи в базу данных "<<endl;
cout<<" 11.Удаление записи из базы данных "<<endl;
cout<<" 12.Вывод "<<endl;
cout<<" 13.Создание новой базы данных "<<endl;
cout<<" 14.Конец работы "<<endl;
cout<<endl<<endl;
cout<<" Выберите интересующий пункт: ";
cin>>pm;
cout<<endl<<endl;
switch(pm)
{
case 1:A.input_file();break;
case 3:A.alfsort();break;
case 4:A.sohranenie();break;
case 12:A.Vivod();break;
case 13:A.input();break;
case 14:cout<<"Конец работы";
_getch();
return;
default:cout<<"Нет такого пункта";
_getch();break;
}
}
}
// 12//
void building::input()
{
const int n=5;
char g;
int i=1;
cout<<"Введите данные о студенте:"<<endl;
while (i<=n){
cout<<i<<".";
cout<<"Имя: ";
cin>>A.name;
cout<<endl;
cout<<"Фамилия: ";
cin>>A.F;
cout<<endl;
cout<<"Отчество: ";
cin>>A.Vs;
cout<<endl;
cout<<"Факультет: ";
cin>>A.K;
cout<<endl;
cout<<"Размер стипендии: ";
cin>>A.O;
cout<<endl;
cout<<"Количество членов семьи: ";
cin>>A.sh;
cout<<endl;
if (start==NULL ) {
start=new spisok;
start->b=A;
start->prev=NULL;
start->next=NULL;
last=start;
}
else{
p=new spisok;
p->b=A;
p->next=NULL;
p->prev=last;
last->next=p;
last=p;
}
++i;
if (i<=n) {
cout<<"Хотите добавить еще одну запись?\n";
cout<<"Y-да; N-нет\n";
cin>>g;
if (g=='N'){
cout<<"Данные введены\n\n";
getch();
return;
_getch();break;
}else
cout<<"Данные введены\n\n";
}
}
}
void building::alfsort()
{
building t;
p=start;
while (p!=last){
s=p->next;
while (s!=NULL){
if(strcmp(p->b.name, s->b.name)>0)
{
t=p->b;
p->b=s->b;
s->b=t;
}
s=s->next;
}
p=p->next;
}
return;
}
void building::Vivod()
{
if (start==NULL){
cout<<"Список пуст\n";
}
else{
p=start;
cout<<" ""Данные студентов\n\n";
do {
cout<<"Имя: ";
cout<<" "<<p->b.name<<endl;
cout<<"Фамилия: ";
cout<<" "<<p->b.F<<endl;
cout<<"Отчество: ";
cout<<" "<<p->b.Vs<<endl;
cout<<"Факультет: ";
cout<<" "<<p->b.K<<endl;
cout<<"Размер стипендии: ";
cout<<" "<<p->b.O<<endl;
cout<<"Количество членов семьи: ";
cout<<" "<<p->b.sh<<endl<<endl;
p=p->next;
} while (p!=0);
cout<<endl;
}
}
void building::sohranenie()
{
char file[L];
ofstream out;
char otvet;
cout<<"Сохранить изменения?"<<endl<<"Да(нажмите Y),Нет(нажмите N)";
cin>>otvet;
if(otvet=='Y')
{
cout<<"Введите директорию, в которую будет произведено сохранение: ";
cin>>file;
out.open(file);
if(out==NULL)
{
cout<<"Файл не создан"<<endl<<"Программа будет завершена";
_getch();
exit(1);
}
}
p=start;
while (p!=NULL){
out<<setw(10)<<p->b.name<<setw(10)<<p->b.F<<setw(10)<<p->b.Vs<<setw(13)<<p->b.K<<setw(13)<<p->b.O<<setw(10)<<p->b.sh<<endl;
p=p->next;
}
cout<<endl;
}
void building::input_file()
{
ifstream fin;
char file[L];
cout<<"Укажите путь к файлу: ";
cin>>file;
fin.open(file);
if(fin==NULL)
{
cout<<"Файл не может быть открыт";
_getch();
exit(1);
}
p=NULL; //------------------------------------------------------------------>по моему
while(p!=NULL)//------------------------------------------------------------->проблема
{
fin>>p->b.name>>p->b.F>>p->b.Vs>>p->b.K>>p->b.O>>p->b.sh;//-------->где-то здесь
p=p->next;
}
fin.close();
}