asantos38 Postado Dezembro 5, 2018 Denunciar Share Postado Dezembro 5, 2018 Boa tarde, galera! Fiz um pequeno programa de cadastro de pessoas e percebi que quando exibo as pessoas cadastradas o último registro gravado está duplicado. Estou usando win10 e o compilador é o minGW. segue o código: #include <stdio.h> #include <stdlib.h> #include <string.h> struct Pessoa{ char nome[30]; int idade; }; void pausa(){ printf("pressione qualquer tecla para voltar ao menu principal\n"); scanf("%*c"); } void limpar_buffer(){ scanf("%*[^\n]"); scanf("%*c"); } void cadastrar(){ FILE* fp; struct Pessoa p; char escolha = 's'; do{ system("cls"); printf("Rotina de cadastro\n\n\n"); printf("Nome: "); fgets(p.nome, 30, stdin); printf("Idade: "); scanf("%d%*c", &p.idade); fp = fopen("cadastro.dat", "ab"); fwrite(&p, sizeof(p), 1, fp); fclose(fp); system("cls"); printf("Cadastro realizado com sucesso!\n"); printf("\n\n\nCadastrar outro?: "); escolha = getchar(); limpar_buffer(); }while(escolha != 'n' && escolha != 'N'); } void exibir(){ FILE* fp; struct Pessoa p; int total = 0; system("cls"); printf("Relacao de cadastrados\n\n\n"); fp = fopen("cadastro.dat", "rb"); while(!feof(fp)){ fread(&p, sizeof(p), 1, fp); total++; printf("Nome: %s\n", p.nome); printf("Idade: %d\n", p.idade); printf("-----------------------------------------\n"); } fclose(fp); printf("Numero de cadastrados: %d\n", total); pausa(); } int menu(){ int m; system("cls"); printf("Menu principal\n\n\n"); printf("[1] - Cadastrar\n"); printf("[2] - Relacao cadastrados\n"); printf("[3] - Sair\n"); printf("\n\n\n?: "); scanf("%d%*c", &m); return m; } int main(){ //declaração de variáveis. int escolha = 0; do{ escolha = menu(); switch(escolha){ case 1:cadastrar(); break; case 2:exibir(); } }while(escolha != 3); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
asantos38
Boa tarde, galera!
Fiz um pequeno programa de cadastro de pessoas e percebi que quando exibo as pessoas cadastradas o último registro gravado está duplicado.
Estou usando win10 e o compilador é o minGW.
segue o código:
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.