machi Posted November 13, 2006 at 11:15 PM Report #64199 Posted November 13, 2006 at 11:15 PM 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?
TheDark Posted November 14, 2006 at 01:11 AM Report #64221 Posted November 14, 2006 at 01:11 AM 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.
machi Posted November 14, 2006 at 10:25 AM Author Report #64249 Posted November 14, 2006 at 10:25 AM No monitor aparecem cerca de duas linhas e meia de caracteres sem sentido
Saco Posted November 14, 2006 at 10:49 AM Report #64252 Posted November 14, 2006 at 10:49 AM 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)).
machi Posted November 14, 2006 at 10:55 AM Author Report #64254 Posted November 14, 2006 at 10:55 AM 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 ?
Saco Posted November 14, 2006 at 11:10 AM Report #64257 Posted November 14, 2006 at 11:10 AM 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.
Manhoso Posted November 14, 2006 at 09:46 PM Report #64398 Posted November 14, 2006 at 09:46 PM 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..
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now