Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Чтение структуры из текстового файла

62K
15 марта 2011 года
vaselo
6 / / 09.11.2010
неправильно считывает из файла эл-ты структуры:
Код:
#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;
        }
    }
}
62K
16 марта 2011 года
vaselo
6 / / 09.11.2010
Ну помогите.... тут не все так сложно, не работает лишь ф-ция read(first); всю прогу дал для тестирования, ппц просто, умираю над ней весь день(уже и ночь за половину переползла....)

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог