Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marianna

[Resolvido] Editar em arquivo binário

Recommended Posts

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.