Ir ao conteúdo
  • Cadastre-se

percautus

Membro Pleno
  • Posts

    57
  • Cadastrado em

  • Última visita

Reputação

0
  1. voce pode comprar um daqueles gabinetes que permitem que um HD IDE seja lido através da USB. Por exemplo:http://www.maxxtro.com.br/storages/speed3500s/index.htm
  2. Imprimir folha em branco pode ser o cartucho ou algum problema de driver ou configuração. Para tirar a dúvida sobre o cartucho, experimente fazer uma cópia sem imprimir (com a impressora desligada do micro). A folha está bem posicionada para ser puxada pela multifuncional? O papel está bem seco?
  3. Antes de inserir o registro, teste se o codigo já existe. Vai ter que fazer uma função que varre o arquivo inteiro, e retorna a existência daquele código. Existindo, você pode dar a opção para alterar o registro ou informar outro código para inclusão. É um procedimento normal em aplicações de cadastro...
  4. Vamos lá: 1) Primeiro seu arquivo deve estar aberto para leitura e gravação FILE * meuarq; meuarq = fopen("jogos.dat", "r+b"); 2) Chamar a função informando o código do registro a ser alterado: alterar(meuarq, 10); // por exemplo, alterar o registro de codigo 10 3) Modifiquei (em vermelho) o seu código para: void alterar(FILE *pont, int codigo) { struct jogo cad; int sucesso=0; [COLOR="Red"] int posicao = 0; // inicio do arquivo // usar fseek para ir ao inicio do arquivo pois // voce pode estar adiante do registro que quer alterar fseek(pont, posicao, SEEK_SET); [/COLOR] do { if (fread(&cad,sizeof(struct jogo),1,pont) == 0) break; if (cad.codigo == codigo) { system("cls"); printf("<<<<<Registro Antigo>>>>>\n\n"); printf("Codigo............: %d\n",cad.codigo); printf("Jogo..............: %s\n",cad.nome_jogo); printf("Plataforma........: %s\n",cad.plataforma); printf("Desenvolvedor'a'..: %s\n",cad.desenvolvedor_a); printf("Ano...............: %d\n\n",cad.ano); printf("<<<<<Digite o Registro novo>>>>\n\n"); printf("Código..........: "); scanf("%d", &cad.codigo); fflush(stdin); printf("Nome do Jogo....: "); gets(cad.nome_jogo); printf("Plataforma......: "); gets(cad.plataforma); printf("Desenvolvedor'a': "); gets(cad.desenvolvedor_a); fflush(stdin); printf("Ano.............: "); scanf("%d", &cad.ano); fflush(stdin); cad.deletado=0; [COLOR="red"] // quando você le o arquivo o ponteiro se desloca. // é necessario voltar para a posicao anterior a // da leitura que é onde o registro começa fseek(pont, posicao, SEEK_SET); // agora sim, podemos gravar // e é melhor o sucesso estar condicionado a // correta gravacao do registro (abaixo) [/COLOR] sucesso= fwrite(&cad,sizeof(struct jogo),1,pont) == sizeof(struct jogo); break; } [COLOR="Red"] // ajustar posicao em relação ao inicio do arquivo posicao = posicao + sizeof(struct jogo); [/COLOR] } while(1); if (!sucesso) printf("Jogo não encontrado no arquivo\n"); system("pause"); } Uma observação: 1) Não acho legal permitir trocar de código. Acho que é isto. Vamos ver se funciona...

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...