Felipe Weber Postado Novembro 18, 2014 Denunciar Share Postado Novembro 18, 2014 Boa tarde pessoal, estou com um problema no meu código da faculdade. Preciso deletar o ultimo registro digitado pelo usuário Segue o Código, este é um trabalho para entregar estou digamos, desesperado! hehehe #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> const int TAM_BUFFER = 255;// quantidade de caracteres a serem lidos no buffer de cada vez char arq[] = "Agenda.txt"; FILE *ptr_arq; typedef struct{ char Rua[50]; char Numero[30]; char CEP[30]; char Cidade[30]; char Estado[30]; }Endereco; typedef struct{ char Nome[50]; char Telefone[20]; Endereco local; char Email[50]; }Agenda; Agenda add; int CriarMenu(); Agenda InserirRegistro(); Agenda RemoverRegistro(); Agenda ListarRegistro(); Agenda BuscarRegistro(); main(){ switch(CriarMenu()){ case 1:{ printf("\nInserir Registro\n"); InserirRegistro(); return main(); } case 2:{ printf("\nRemover Registro\n"); RemoverRegistro(); return main(); } case 3:{ printf("\nListar Registro\n"); ListarRegistro( ); return main(); } case 4:{ printf("\nBuscar Registro\n"); BuscarRegistro(); return main(); } case 5:{ printf("\nSair\n"); break; } default:{ printf("\nCodigo errado digite novamente"); return main(); } } } int CriarMenu(){ int op; printf("\nMenu da agenda\n1) Inserir Registro\n2) Remover Registro\n3) Listar Todos Registros\n4) Buscar por um Registro\n5) Sair\n"); printf("\nDigite sua opcao: "); scanf("%d", &op); if(isalpha(op)){ // causa um erro e fecha o program não permetindo que ele entre em loop infinito printf(" Error "); } return op; } Agenda InserirRegistro(){ ptr_arq = fopen(arq, "a"); // abre o arquivo e salva o conteudo printf("Digite o Nome : "); scanf(" %[^\n]", add.Nome); // %[^\n] le os espaços entre as strings fprintf(ptr_arq, "%s\t", add.Nome); // grava o conteudo no arquivo printf("Informe o celular : "); scanf(" %[^\n]", add.Telefone); fprintf(ptr_arq, "%s\t", add.Telefone); printf("Digite o nome da Rua : "); scanf(" %[^\n]", add.local.Rua); fprintf(ptr_arq, "%s\t", add.local.Rua); printf("Informe o numero da rua : "); scanf(" %[^\n]", add.local.Numero); fprintf(ptr_arq, "%s\t", add.local.Numero); printf("Informe o CEP : "); scanf(" %[^\n]", add.local.CEP); fprintf(ptr_arq, "%s\t", add.local.CEP); printf("Informe sua Cidade : "); scanf(" %[^\n]", add.local.Cidade); fprintf(ptr_arq, "%s\t", add.local.Cidade); printf("Informe o Estado : "); scanf(" %[^\n]", add.local.Estado); fprintf(ptr_arq, "%s\t", add.local.Estado); printf("Informe o Email : "); scanf(" %[^\n]", add.Email); fprintf(ptr_arq, "%s\n", add.Email); fclose(ptr_arq); // fecha arquivo } Agenda RemoverRegistro(){ char nome[20]; int op; FILE *tmp; ptr_arq = fopen("Agenda.txt","r"); tmp = fopen("banco.txt","a"); printf("\n\n"); printf("Digite nome do contato que quer apagar: "); fflush(stdin); scanf("%s", nome); printf ("\tRegistro Encontrado\n"); while((fscanf(ptr_arq, "%s\n", add.Nome))!=EOF){ if(strstr(add.Nome,nome)){ if(strcmp(add.Nome,nome)==0){ printf("Nome:\t Deseja deletar? [1-Sim ou 2-não]: \n",add.Nome); scanf("%d", &op); switch(op){ case 1:{ system("clear"); printf("Contato deletado! "); break; } case 2:{ system("clear"); printf("Contato deletado! "); break; } } } } } fclose(ptr_arq); fclose(tmp); system("del Agenda.txt"); system("ren banco.txt,Agenda.txt"); } Agenda ListarRegistro( ){ ptr_arq = fopen(arq, "r"); // abre o arquivo para leitura char x; // variavel que ira receber os caracteres do arquivo printf("Nome\t\tTelefone\t\tRua\t\tNumero\t\tCEP\t\tCidade\t\tEstado\t\tEmail\n"); while((x=fgetc(ptr_arq)) != EOF){ // le caracter pro caracter do arquivo ate encontrar o final do arquivo printf("%c", x); // imprime caracter por caracter } fclose(ptr_arq); // fecha arquivo } Agenda BuscarRegistro(){ char procura[50]; // variavel que ira receber o nome para pesquisa char buffer[TAM_BUFFER]; // variavel que ira receber todo conteudo do arquivo ptr_arq = fopen(arq, "r"); // abre o arquivo para leitura printf("Digite o nome da busca : "); scanf(" %[^\n]", procura); while(fgets(buffer, TAM_BUFFER, ptr_arq)){ // ele ira ler todo o conteudo e ira colocar no buffer if(strstr(buffer,procura) ){ // ve se o valor que tem em procura tem dentro de buffer printf("Nome\t\tTelefone\t\tRua\t\tNumero\t\tCEP\t\tCidade\t\tEstado\t\tEmail\n"); printf("%s\n", buffer); } } if(add.Nome!=procura){ printf("O nome %s não esta cadastrado na agenda.", procura); } fclose(ptr_arq); // fecha o arquivo } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Felipe Weber
Boa tarde pessoal, estou com um problema no meu código da faculdade. Preciso deletar o ultimo registro digitado pelo usuário
Segue o Código, este é um trabalho para entregar estou digamos, desesperado! hehehe
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.