Ir para conteúdo

Doloblan

Members
  • Total de itens

    1
  • Registro em

  • Última visita

Reputação

0 Comum

Sobre Doloblan

  1. Doloblan

    nao esta salvando a variavel no arquivo binario

    Peguei esse codigo da internet, e estou tentando modificar ele para ficar do jeito que preciso, peguei ele sem funcao e preciso de funcao para cada acao e apos criar a funcao de cadastro apenas para teste nao salva a variavel no arquivo binario. #include <stdio.h> #include <stdlib.h> #include <string.h> struct Contato{ char nome[100]; int telefone; }; struct Contato *agenda; FILE *fp; int cadastra(int n, int cap){ fp = fopen("xxx.dat","a+b"); if(n == cap){ cap *= 2; agenda = realloc(agenda, sizeof(struct Contato)*cap); } printf("Digite o nome: "); scanf(" %[^\n]", agenda[n].nome); printf("Digite o telefone: "); scanf("%d", &agenda[n].telefone); fwrite(agenda, sizeof(struct Contato), n, fp); fclose(fp); return n++; } int main(){ int cap; int n; int opc; int i; struct Contato *agenda; FILE *fp; fp = fopen("xxx.dat","rb"); printf("N; %d \n", n); if(fp==NULL){ n = 0; cap = 20; agenda = (struct Contato *)malloc(sizeof(struct Contato)*cap); } else{ fread(&n, sizeof(int), 1, fp); cap = n*2; agenda = (struct Contato *)malloc(sizeof(struct Contato)*cap); fread(agenda, sizeof(struct Contato), n, fp); fclose(fp); } do{ printf("*** Menu ***\n"); printf("1) Cadastrar contato.\n"); printf("2) Exibir contatos.\n"); printf("3) Apagar.\n"); printf("4) Sair.\n"); scanf("%d",&opc); switch(opc){ case 1: printf("n %d\n", n); n = cadastra(n, cap); printf("n %d\n", n); break; } if(opc==2){ for(i=1; i<4; i++){ printf("*** Contato %d ***\n",i+1); printf("Nome: %s\n",agenda.nome); printf("Telefone: %d\n",agenda.telefone); } printf("N; %d \n", n); } else if(opc==3){ char nome[100]; int j; scanf("%s",&nome); for(i=0; i<n; i++){ if (strcmp(agenda.nome, nome)==0){ for(j=i+1; j<n; j++){ strcpy(agenda[j-1].nome,agenda[j].nome); agenda[j-1].telefone=agenda[j].telefone; } n--; i=n; } } } }while(opc!=4); if(n>0){ fp = fopen("xxx.dat","wb"); fwrite(&n, sizeof(int), 1, fp); fwrite(agenda, sizeof(struct Contato), n, fp); fclose(fp); } free(agenda); return 0; }
×

Informação importante

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