Jump to content

[C++] Ajuda: Leitura de Ficheiro (Resolvido)


Recommended Posts

Posted

Boa noite.

Estou com um pequeno problema.

Após implementar esta funcao verifico que o que é apresentado no monitor é apenas lixo.

void LerMensagem(int N)
{
ifstream f("portugues.txt");
char Mens[100];
for (int i=0 ; i<N-1 ; i++)
	f.getline(Mens,100);
cout << Mens<<endl;
f.close();
}

Não consigo visualizar nada do que está no ficheiro.

A leitura é feita para um menu onde estarão as opções do programa.

int MenuPrincipal()
{
int op;
cout << "*******************************"<<endl;
LerMensagem(0);
LerMensagem(1);
LerMensagem(2);
LerMensagem(3);
LerMensagem(4);
LerMensagem(5);
LerMensagem(6);
cin >> op;
return op;
}

O que poderá estar mal implementado?

Posted

Só vejo dois problemas aí, mas que não deviam fazer o código não funcionar:

- Ao chamares LerMensagem(0), o for (int i=0 ; i<N-1 ; i++) não xega a fazer nada.

- A função LerMansagem é ineficiente, porque para leres uma linha vais ler o ficheiro todo desde o início.

Que quantidade de "lixo" vês?

Desaparecido.

Posted

No monitor aparecem cerca de duas linhas e meia de caracteres sem sentido

E a seguir a essas linhas já fica tudo ok? é que quando fazes LerMensagem(0) e LerMensagem(1) não estás a ler rigorosamente nada do ficheiro, porque nestes casos N-1 é -1 e 0 respectivamente, portanto o código dentro do ciclo for não chega a ser executado.

O problema é que depois vais ler o conteudo do Mens, e como o ciclo for não chegou a ser executado, essa variável não foi inicializada, logo o que te vai aparecer sao 200 vezes lixo (100 vezes no LerMensagem(0) e outras 100 no LerMensagem(1)).

Posted

Ao fim de aparecer o lixo aparecem-me mais algumas linhas em branco e dps o cursor aparece a seguir a essas linhas em branco...

Terei entao que mudar o valor do N ?

Posted

Sim, se o objectivo do N é ser o número de linhas a ler, deves mudar N-1 para N.

Mas convem inicializares a variável Mens para não imprimires lixo no caso de não leres nada.

Posted

boas!!

concordo com iniciares a var Mens a vazio...

outra coisa k tambem convém ver o k esta escrito e em codificação foi escrito o ficheiro...e se não me engano o c++ trabalha com ANSI..

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.