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;*
*
}
*
Discussão (0)
Carregando comentários...