Jump to content
darktrhone

Guardar em ficheiros.

Recommended Posts

darktrhone

Bem, eu estou a fazer um jogo em c++ em que se vai passando de nivel ao longo do tempo, e pretendo guardar os meus status, o nivel, gold etc... Em um ficheiro. Eu nunca trabalhei com ficheiros em c++ e estou a ter algumas dificuldades.

Ou seja, eu queria que me dessem um excerto de código em que me permita guardar uma variável por exemplo level=5 e que depois no ínício do programa, ele leia esse valor.

Obrigado.


Aprendiz informático, comecei a programar há menos de 1 ano.

Share this post


Link to post
Share on other sites
Andrepereira9

A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
pikax

http://www.cplusplus.com/doc/tutorial/files/

tens aqui um exemplo muito básico:

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>

using namespace std;

void abrir_ficheiro(char *nomeFich, int *valor)
{
    *valor=0;
    ifstream fin(nomeFich);
    if(!fin.is_open())
    {
        cout<<"Erro a abrir o ficheiro "<<nomeFich<<endl;
        return;
    }
    fin>>*valor;

    fin.close();
}
void guardar_no_ficheiro(char* nomeFich, int valor)
{
    ofstream fout (nomeFich);

    if(!fout.is_open())
    {
        cout<<"Erro a guardar o ficheiro "<<nomeFich<<endl;
        exit(1);
    }

    fout<<valor;
    fout.close();
}

int main()
{
    char nomeFicheiro[100];
    int valor=0;

    cout<<"insira o nome do ficheiro para ler: ";
    cin>>nomeFicheiro;

    //guardar_no_ficheiro(nomeFicheiro,valor);
    abrir_ficheiro(nomeFicheiro,&valor);

    cout<<"Ficheiro \""<<nomeFicheiro<<"\" aberto e a variavel valor="<<valor<<endl;

    cout<<"guardar no ficheiro o valor no ficheiro"<<endl;

    cout<<"valor a guardar no ficheiro: ";
    cin>>valor;

    guardar_no_ficheiro(nomeFicheiro,valor);

    cout<<"o valor guardado no ficheiro "<<valor<<" ";
    abrir_ficheiro(nomeFicheiro,&valor);
    cout<<"e o valor que esta guardado no ficheiro e': "<<valor<<endl;
}

fiz um pouco à presa


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
darktrhone

""Andre""Obrigado pelos links, eu em breve hei-de precisar de fazer um sistema de log-in e este link vai-me ajudar :(

"" pikax""

Eu não uso muito essa biblioteca, eu uso a stdio.h mas percebo minimamente o teu código.

Por exemplo, nesse teu código, tu gravaste uma variável chamada valor.

Se eu quiser voltar a abrir o programa e obter o mesmo valor que tinha na variável "valor" Basta só abrir o ficheiro e ele automáticamente atribui as variáveis guardadas ás variáveis correspondentes ou tenho de atribuir o seu valor uma a uma?


Aprendiz informático, comecei a programar há menos de 1 ano.

Share this post


Link to post
Share on other sites
KTachyon

Não exactamente. Tu é que estás responsável por estruturar a forma como as coisas são escritas no programa.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
pikax

Eu não uso muito essa biblioteca, eu uso a stdio.h mas percebo minimamente o teu código.

Por exemplo, nesse teu código, tu gravaste uma variável chamada valor.

Se eu quiser voltar a abrir o programa e obter o mesmo valor que tinha na variável "valor" Basta só abrir o ficheiro e ele automáticamente atribui as variáveis guardadas ás variáveis correspondentes ou tenho de atribuir o seu valor uma a uma?

Em relação às bibliotecas, é facil: cout é parecido com o printf, o cin é parecido com o scanf. (Basicamente existem muitas diferenças entre eles, mas se não estás muito dentro, é melhor pensares como eu disse)

Ou seja, eu queria que me dessem um excerto de código em que me permita guardar uma variável por exemplo level=5 e que depois no ínício do programa, ele leia esse valor.

Fiz um código que fizesse o que tu pediste.

Claro, que tu tens que que fazer como o KTachyon disse.

Quando o programa executa a função abrir_ficheiro(), ele vai passar a variavel valor por referencia para um apontador, que significa que dentro da função se o valor da variável valor(confuso ;)) mudar, então, na main o valor vai ficar com esse valor.

Eu fiz desta forma porque não estava com paciência para estar a retornar o valor e a guardá-lo.

Agora tens que ver qual é a melhor forma de guardar e ler do ficheiro.

Qualquer dúvida tens sempre o forum  :(


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.