#include "stdafx.h"
#include <stdio.h>
#include <Windows.h>
#include <iostream>
#include <fstream>
using namespace std;
struct stud {
char name[36];
stud* next;
};
int save(stud* first)
{
char fname [80];
if (first==0) {cout<<"Пусто";Sleep(500);return -1;}
cout<<"Введите имя (путь) к файлу: \n";
cin>>fname;
ofstream ofs(fname);
do
{
ofs << first->name << endl;
first = first->next;
}
while(first);
ofs.close();
return 0;
}
void read(stud* &first)
{
ifstream dataIn;
char fname [80];
stud Cur;
stud* p;
cout<<"Введите имя (путь) к файлу: \n";
cin>>fname;
dataIn.open(fname);
if(dataIn.is_open())
{ while(dataIn.good())
{ dataIn.read((char *)&Cur.name,sizeof(stud));
p=new stud;
cout<<p->name<<" ";
p=&Cur;
p->next=first;
first=p;
}system("pause");
dataIn.close();
}
else cout<<"Не удалось открыть файл для чтения\n";Sleep(500);
}
void search (stud* first)
{
char name[36];
int i=1;
if(first==NULL){cout<<"Пусто\n"; Sleep(1000); return;}
cout<<"Введите имя искомого студента >";
cin>>name;
do {if(strcmp(name,first->name))
{cout<<i+1<<"-й номер в списке\n"; Sleep(1000); return;}
else {
i++;
first=first->next;
}
}while(first->next);
cout<<"Нет такого студента\n";Sleep(1000);
return;
}
void adding(stud* &first){
system ("CLS");
stud *p=new stud;
cout<<"\nВведите имя студента: ";
cin>>p->name;
p->next=first;
first=p;
}
void deleting(stud* &first)
{
if(first==NULL){cout<<"Уже пуcто\n"; Sleep(300); return;}
if(first->next==NULL){
delete first;
first=NULL;
return;
}
stud* tmp=first;
while(tmp->next->next){
tmp=tmp->next;
}
delete tmp->next;
tmp->next=NULL;
return;
}
void delling(stud* &first)
{
if(first==NULL){cout<<"Уже пусто\n"; Sleep(200); return;}
if(first->next==NULL){
delete first;
first=NULL;
return;
}
system ("CLS");
while(first->next)
deleting(first);
deleting(first);
return;
}
void empty(stud* first)
{
int i=0;
if(first==NULL)
{
cout<<"Очередь пуста"<<endl;
Sleep(500);
}
else
{
while(first->next){
i++;
first->next;
}
cout<<"\nВ очереди "<<i+1<<" элементов"<<endl;
Sleep(1000);
}
return;
}
void show(stud* first)
{ if(first==NULL){cout<<"Пусто\n"; Sleep(200); return;}
system ("CLS");
if(first->next==0) {cout<<endl<<first->name; Sleep(4000); return;}
else {while(first->next)
{
cout<<endl<<first->name;
first=first->next;
}}
if(first->next==0) cout<<endl<<first->name;
cout<<endl;
system("pause");
}
int main()
{setlocale(LC_ALL, "Russian");
stud* first=NULL;
int sw;
while(1)
{
system ("CLS");
cout<<"1. Добавить студента в список\n"<<"2. Удалить из списка\n";
cout<<"3. Проверить список на пустоту\n"<<"4. Поиск"<<endl<<"5. Очистить очередь"<<endl<<"0. Выход"<<endl<<"6. Показать список"<<endl<<"7. Сохранить список в файл"<<endl<<"8. Считать из файла"<<endl<<endl<<"Сделайте свой выбор\n>";
cin>>sw;
switch(sw)
{
case 1: adding(first); break;
case 2: deleting(first); break;
case 3: empty(first); break;
case 4: search(first); break;
case 5: delling(first); break;
case 6: show(first);break;
case 7: save(first);break;
case 8: read(first);break;
case 0: return 0; break;
}
}
}
Чтение структуры из текстового файла
неправильно считывает из файла эл-ты структуры:
Ну помогите.... тут не все так сложно, не работает лишь ф-ция read(first); всю прогу дал для тестирования, ппц просто, умираю над ней весь день(уже и ночь за половину переползла....)