Ir para conteúdo
Fórum Script Brasil
  • 0

Felipe Weber

Pergunta

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
}
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...