Marianna 0 Denunciar post Postado Junho 14, 2010 Pessoal, Estou fazendo um algoritmo, que deve inserir,alterar e excluir dados em arquivo binario. Já implementei a inclusão de dados e estou tentando fazer a alteração, mas estou com um problema. Na hora de editar (por exemplo a descricao) ele insere um novo registro com o mesmo codigo,data e quantidade do registro anterior e com a nova descrição que digitei. Gostaria de uma ajuda de vcs!! ABAIXO SEGUE A MINHA FUNÇÃO DE ALTERAÇÃO: void alterar(){ int codigo,flag,op; flag=0; char posicao; gotoxy(50,10); printf("ALTERACAO DE CADASTRO: "); gotoxy(15,14); printf("Digite o codigo: "); scanf("%d",&codigo); if(arq=fopen(arquivo,"r+b")){ fseek(arq,sizeof(cad)*codigo,SEEK_SET); fread(&cad, sizeof(cad), 1, arq); gotoxy(15,16); printf("1 - Descricao: %s\n",cad.desc); gotoxy(15,18); printf("2 - Quantidade: %d\n",cad.quant); printf("Qual deseja alterar: "); scanf("%d",&op); switch(op){ case 1: printf("Descricao: "); scanf("%s",&cad.desc); fwrite(&cad.desc,sizeof(cad),1,arq); break; case 2: printf("Quantidade: "); scanf("%d",&cad.quant); fwrite(&cad.quant,sizeof(cad),1,arq); break; default: printf("Opcao invalida!"); break; } } else{ printf("Erro no arquivo!"); } fclose(arq); getch(); clrscr(); menu(); } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 14, 2010 veja sobre fseek para se posicionar no documento ai fica + facil a alteração! []s Compartilhar este post Link para o post Compartilhar em outros sites
Marianna 0 Denunciar post Postado Junho 14, 2010 veja sobre fseek para se posicionar no documento ai fica + facil a alteração! []s Eu estou usando fseek no código só que está estranho, digito 3 para alterar logo depois o programa pergunta qual o codigo, digito o codigo ele efetua a busca certissima e exibe a descrição e quantidade. Depois ele pergunta o q desejo alterar, ai eu digito 1 para alterar a descrição e digito a nova descrição do produto. Ai ele está gravando da seguinte forma: COD DESCRICAO QUANT DATA 1 TESTE 2 14-06-2010 --> ESSA FOI A LINHA QUE INSERI PRIMEIRAMENTE 1 MARI 2 14-06-2010 --> AQUI É A NOVA DESCRIÇÃO,MAS EM UM NOVO REGISTRO E COM OS DADOS DO REGISTRO ANTERIOR. Isso usando o Fseek, gostaria de uma luz, uma ajudinha. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 15, 2010 sei q ta bem feinho esse código q fiz a um tempo atrás + de uma olhada: Código POG ou oq você pode fazer é excluir o anterior e salvar um novo msm []s Compartilhar este post Link para o post Compartilhar em outros sites
Marianna 0 Denunciar post Postado Junho 15, 2010 sei q ta bem feinho esse código q fiz a um tempo atrás + de uma olhada: Código POG ou oq você pode fazer é excluir o anterior e salvar um novo msm []s Obrigada! Dei uma olhada no seu código, ficou bem legal mesmo! Consegui resolver o meu problema, dentro do meu switch em cada case eu coloquei o : codigo=codigo-1; e dei um novo fseek(&cad,sizeof(cad)*codigo,SEEK_SET); ai eu consegui resolver o meu problema, agora vou continuar desenvolvendo ele... MAS AGRADEÇO A TODOS A AJUDA!! VLW!!! Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 16, 2010 http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites