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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2012, 14:51   #1
vlados007
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 10
По умолчанию Чтение\Запись из файла

Нужно сделать программу которая может записывать и считывать информацию из бинарного файла в односвязный список. Но, почему-то, считывание не работает. Если не сложно, помогите исправить ошибку

Код:
#include <iostream>
#include <fstream> 
using namespace std;
//obiyavlenie structur
struct stud{
       char name[20];
       char fam[20];
       char pol[1];
       int rost;
       char mzhit[20];
       double srbal; };
       
struct elem{
       stud s;
       elem *pnext; };
   elem *pfirst, *plist=NULL;
//funkciya zapisi   
    void add() {
            elem *tmp=new elem;
            ofstream f;
            f.open("D:\\data.dat",ios::app);
			cout<<"Vvedite imya\n";
			cin>>tmp->s.name;
			f<<tmp->s.name<<" ";
			cout<<"Vvedite familiyu\n";
			cin>>tmp->s.fam;
            f<<tmp->s.fam<<" "; 
			cout<<"Zadaite pol\n";
			cin>>tmp->s.pol; 
			f<<tmp->s.pol<<" "; 
			cout<<"Vvedite rost\n";
			cin>>tmp->s.rost; 
			f<<tmp->s.rost<<" ";
			cout<<"Vvedite mesto zhitalstva\n";
			cin>>tmp->s.mzhit; 
			f<<tmp->s.mzhit<<" ";
			cout<<"Vvedite srednii bal\n";
			cin>>tmp->s.srbal;
            f<<tmp->s.srbal<<" "; 
            if (!plist) {
		tmp->pnext=NULL;
		plist=tmp;
		pfirst=plist;}
	else {
		plist->pnext=tmp;
		tmp->pnext=NULL; 
		plist=tmp; }
		f.close();
		} 
//funkciya ochistki		
void del() {ofstream d; d.open("D:\\data.dat",ios::out); d.close(); cout<<"Binarnii fail ochishen!\n";}	

		
//funkciya schitivaniya
void read(){
      ifstream f; 
            f.open("D:\\data.dat",ios::in);
     elem *tmp=new elem;
    
        
           
			f>>tmp->s.name;
            f>>tmp->s.fam; 
			f>>tmp->s.pol; 
			f>>tmp->s.rost;
			f>>tmp->s.mzhit;
            f>>tmp->s.srbal;
             if (!plist) {
		tmp->pnext=NULL;
		plist=tmp;
		pfirst=plist;}
	else {
		plist->pnext=tmp;
		tmp->pnext=NULL; 
		plist=tmp; }
  
       tmp=tmp->pnext;    
		f.close(); 	}


//vyvod studentov na ekran

 void show(){
             elem *tmp=pfirst; int k=0;
             while (tmp){ k++;
                   cout<<k<<". "<<tmp->s.name<<"\t"<<tmp->s.fam<<endl;
                   cout<<"Pol:"<<tmp->s.pol<<"\tRost: "<<tmp->s.rost<<endl;
                   cout<<"Mesto zhitelstva: "<<tmp->s.mzhit<<"\tSrednii bal: "<<tmp->s.srbal<<endl;
                   cout<<endl;
                   tmp=tmp->pnext; } } 	
		
 //glavnaya funkciya  
int main()
{ int n,k;
    cout<<"Viberite nyzhnoe deistvie\n\t1.Zapisat'\n\t2.Schitat'\n\t3.Ochistit' zapisi\n";
    cin>>n; int num;  ifstream q; ofstream c;
    switch (n) { 
           
           case 1: 
           cout<<"Vvedite k-vo studentov\n"; 
           cin>>k;  c.open("D:\\c.dat",ios::out); c<<k; c.close();
           for(int i=0;i<k;i++) {add();}
           cout<<"Dannie sohraneni, zapustite programmy esche raz dlya ih obrabotki\n"; break;
    
    
    case 2: 
         q.open("D:\\c.dat",ios::in);  q>>num; q.close();
    for(int i=0;i<num;i++) {read(); }
    show(); break;
    
    case 3: del(); break;
    default: cout<<"Vibrano nekorrektnoe deistvie\n"; break; }
   
    system("PAUSE");
    return EXIT_SUCCESS;
}

Последний раз редактировалось ACE Valery; 09.03.2012 в 16:25.
vlados007 вне форума Ответить с цитированием
Старый 10.03.2012, 04:15   #2
AlexDark
Форумчанин
 
Аватар для AlexDark
 
Регистрация: 23.12.2011
Сообщений: 117
По умолчанию

В функции read() ты каждый раз открываешь файл, и постоянно считываешь 1-ю запись.
AlexDark вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чтение и запись файла VaskaKostolom Паскаль, Turbo Pascal, PascalABC.NET 5 13.09.2011 20:59
чтение\запись из файла Skrip Общие вопросы C/C++ 3 23.09.2009 19:05
Запись и чтение из файла МаксMorfey Общие вопросы по Java, Java SE, Kotlin 5 10.06.2009 11:39
Запись и чтение файла... Altera Общие вопросы Delphi 5 06.05.2008 20:22