lulamen Posted May 3, 2015 at 05:31 PM Report Share #582378 Posted May 3, 2015 at 05:31 PM Boa tarde, Tenho um programa cujo menu é relativamente simples e que faz algumas funcionalidades tais como isto: 1-Listar Pessoas 2-Adicionar Pessoas 3-Eliminar Pessoas Estas pessoas a que me refiro estão guardadas num ficheiro binário com a ajuda de uma estrutura Quando eu adiciono pessoas ele pede-me a nome de cada pessoa e a idade e guarda num ficheiro binário mas depois escolho a opção 1 e ele não mostra nada. Só depois de fechar a command window e voltar a compilar é que ele da a lista de pessoas. O mesmo acontece com eliminar pessoas... Eu elimino e depois quero ver a lista e ele nao mostra a lista atualizada. Mostra apenas depois de compilar novamente. Alguem me pode ajudar? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 3, 2015 at 05:35 PM Report Share #582379 Posted May 3, 2015 at 05:35 PM sim .. e o código ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
lulamen Posted May 4, 2015 at 12:04 PM Author Report Share #582432 Posted May 4, 2015 at 12:04 PM (edited) .. Edited May 5, 2015 at 05:53 PM by lulamen geshi Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 4, 2015 at 01:31 PM Report Share #582434 Posted May 4, 2015 at 01:31 PM tirando uma péssmia gestão do buffer de leitura, o código parece fazer o pretendido, ao contrário do que é dito no primeiro post. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
lulamen Posted May 5, 2015 at 10:21 AM Author Report Share #582483 Posted May 5, 2015 at 10:21 AM Primeiramente, ja consegui detetar o erro no que toca ao listar pessoas logo depois de as adicionar. O Erro estava num close(f) na funcao enviar_informação. E erro estava numa falta de uma letra "f" ou seja, fclose(f). Agora, no que toca à eliminação, o programa elimina correctamente mas depois nao elimina o ficheiro "jogadores.bin" e faz o rename do ficheiro "temp.bin". Apenas o faz se eu ao eliminar o id de uma pessoa e fechar o programa e voltar a compilar ele, aí sim, faz o processo corretamente Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 5, 2015 at 10:35 AM Report Share #582485 Posted May 5, 2015 at 10:35 AM primeiro altera as segunites linhas : #include <errno.h> #include <string.h> // ... if (remove(fich_pessoas) != 0) { printf("erro ao eliminar o ficheiro %s : %s\n", fich_pessoas, strerror(errno)); } if (rename("temp.bin","jogadores.bin") != 0) { printf("erro a copiar o ficheiro 'temp.bin' para 'jogadores.bin' : %s\n", strerror(errno)); } // ... depois, o erro está na falta de fecho do ficheiro num momento específico toma atenção se todas as vezes que abres o ficheiro o fechas (eu sei que não, por isso não respondas que fechas ...) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
lulamen Posted May 5, 2015 at 01:38 PM Author Report Share #582496 Posted May 5, 2015 at 01:38 PM Da-me o erro: Permission denied... Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 5, 2015 at 01:59 PM Report Share #582498 Posted May 5, 2015 at 01:59 PM depois, o erro está na falta de fecho do ficheiro num momento específico toma atenção se todas as vezes que abres o ficheiro o fechas (eu sei que não, por isso não respondas que fechas ...) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
lulamen Posted May 5, 2015 at 05:53 PM Author Report Share #582511 Posted May 5, 2015 at 05:53 PM Eu ja entendi onde esta o erro. Ele esta na funcao listar_pessoas porque se eu pedir para listar as pessoas e depois posteriormente eliminar alguma ele n me deixa pois tenho o ficheiro aberto da listagem. Mas nao consigo encontrar a solução.. Já consegui ! faltava um fclose(f) dentro do else na funcao listar_pessoas Link to comment Share on other sites More sharing options...
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