Ir ao conteúdo
  • Cadastre-se

Problema com salvar e ler arquivo(write e reand)


andersoney

Posts recomendados

Estou com um problema quando salvo um arquivo, e depois tento retomar os dados presentes nele, quando o programa está rodando, ele funciona legal, porém quando eu fecho e abro novamente ele não consegue ler os dados, aparece apenas um monde de codigo que acredito ser binario.

 

segue o codigo do arquivo main tanto quanto a class.

 

Main.cpp

 

 

#include "alunoDados.h"

 
 
#include <fstream>
#include <cstdlib>
#include <stdio.h>
#include <string.h>
#include <iostream>
 
 
 
using namespace std;
 
int main()
{
    alunoDados arquivo;
    arquivo.menu();
    return 0;
}
 

 

 

alunoDados.h

 

 

#ifndef ALUNODADOS_H

#define ALUNODADOS_H
 
#include <fstream>
#include <cstdlib>
#include <stdio.h>
#include <string.h>
#include <iostream>
 
using namespace std;
class alunoDados
{
    int codigo=1;
    char nome[50];
    float n1, n2, n3, n4, mf;
    public:
        alunoDados()
        {
           /* fstream dados;
            dados.open("Dados_Aluno.txt",ios::app|ios::binary);
            if(!dados)
                {
                    cerr<<"Erro ao abrir o programa"<<endl;
                    exit(1);
                }else{
                }
            dados.close();*/
        }
        virtual ~alunoDados() {}
        void salvar()
        {
            ofstream fsalvar;
            fsalvar.open("Dados_Aluno.txt",ios::binary|ios::ate);
            if(!fsalvar)
                {
                    cerr<<"Erro"<<endl;
                    exit(1);
                }
                alunoDados cpp;
            int a;
            do{
            cout<<"Digite o nome do aluno:"<<endl;
            cin>>nome;
            cout<<"Digite a nota da Primeira prova:"<<endl;
            cin>>n1;
            cout<<"Digite a nota da Segunda prova:"<<endl;
            cin>>n2;
            cout<<"Digite a nota da Terceira prova:"<<endl;
            cin>>n3;
            cout<<"Digite a nota da Quarta prova:"<<endl;
            cin>>n4;
            codigo++;
            cout<<"Deseja cadastrar mais alunos?"<<endl<<"1 - Sim"<<endl<<"0 - Nao"<<endl;
            cin>>a;
            fsalvar.write((char*)&cpp,sizeof(alunoDados));
            }while(a!=0);
            fsalvar.close();
        }
        void menu()
        {
            int opcMenu;
            cout<<"Escolha entre as opções:"<<endl;
            cout<<"1 - Salvar novos alunos."<<endl<<"2 - Verificar registros"<<endl<<"0 - Sair."<<endl;
            cin>>opcMenu;
            switch(opcMenu)
            {
                case 1:
                    salvar();
                    menu();
                    break;
                case 2:
                    ler();
                    menu();
                    break;
                default:
                    exit(0);
                    break;
            }
 
        }
        void ler()
        {
            alunoDados cpp;
            ifstream ler_arquivo;
            ler_arquivo.open("Dados_Aluno.txt",ios::binary|ios::in);
            ler_arquivo.seekg(0);
            if(!ler_arquivo)
                {
                    cerr<<"Erro ao ler arquivo"<<endl;
                    exit(1);
                }
            while(ler_arquivo)
                {
                    ler_arquivo.read((char*)&cpp,sizeof(alunoDados));
                    mostrar_na_tela();
                }
                ler_arquivo.close();
        }
        void mostrar_na_tela()
        {
            cout<<"Nome do aluno:"<<endl<<nome<<endl;
            cout<<"Nota da primeira unidade:"<<endl<<n1<<endl;
            cout<<"Nota da segunda unidade:"<<endl<<n2<<endl;
            cout<<"Nota da terceira unidade:"<<endl<<n3<<endl;
            cout<<"Nota da quarta unidade:"<<endl<<n4<<endl;
 
        }
    protected:
    private:
 
};
 
#endif // ALUNODADOS_H
 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...