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

EXCLUIR REGISTRO


Guest wandey

Pergunta

AE GALERA.... PRECISO DE AJUDA ..... ESTOW FAZENDO UM TRABALHO DE LOGICA DE PROGRAMAÇÃO, É SOBRE ARQUIVO....

já FIZ O CÓDIGO SO Q TA DANDO PROBLEMA NA HORA DE EXCLUIR O REGISTRO... SO TA EXCLUINDO UM REGISTRO... VOU MANDAR O PROGRAMA PRA SER ANALISADO..... POW SE PODEREM ME AJUDAR AGRADEÇO....

#include <stdio.h>

struct Tagenda

{

int cod;

char nome[30], fone[15];

};

struct Tagenda regagenda;

FILE *arqagenda,*auxiliar;

//Opcao 1

incluir()

{

char resposta[2]="N";

//a = abre um arquivo para a gravacao no final do arquivo

arqagenda = fopen ("ARQAGEN.txt","a");

printf("\nCADASTRO DE ENTRADA\n\n");

if (arqagenda == NULL)

{

printf("Ocorreu um erro ao abrir o arquivo !");

printf("Aperte algo para voltar ao menu...");

}

else

{

do{

printf("Codigo..: ");

scanf("%d",&regagenda.cod);

printf("Nome..: ");

scanf("%s",regagenda.nome);

printf("Fone: ");

scanf("%s",regagenda.fone);

//fwrite(registro,tamanho do registro em byte,indica quantos itens serao escritos,arquivo)

fwrite(&regagenda,sizeof(struct Tagenda),1,arqagenda);

printf("Cadastro efetuado....\n\n");

printf("Cadastrar novamente? (s/n)....");

scanf("%s",resposta);

}

while (strcmp (resposta,"s")==0 || strcmp (resposta,"S")==0);

fclose(arqagenda);

}

return (0);

}

//Opcao 2

excluir()

{

char resposta[2]="N";

int codigo;

//r = abrir um arquivo para leitura

arqagenda=fopen("ARQAGEN.txt","r");

printf("\n\nEXCLUSAO DE REGISTROS\n\n");

if (arqagenda == NULL)

{

printf("Ocorreu um erro ao abrir o arquivo !");

printf("Aperte algo para voltar ao menu...");

}

else

{

do{

printf("Digite o codigo a ser excluido...");

scanf("%d",&codigo);

fread(&regagenda,sizeof(struct Tagenda),1,arqagenda);

while (!feof(arqagenda) && regagenda.cod != codigo)

fread(&regagenda,sizeof(struct Tagenda),1,arqagenda);

if (!feof(arqagenda))

{

//w = cria um arquivo para gravacao

auxiliar = fopen("AUXI.txt","w");

if (!(auxiliar == NULL)){

//rewind = posiciona o cursor de volta a inicio do arquivo

rewind(arqagenda);

fread(&regagenda,sizeof(struct Tagenda),1,arqagenda);

while (!feof(arqagenda))

{

if (regagenda.cod != codigo)

fwrite(&regagenda,sizeof(struct Tagenda),1,auxiliar);

fread(&regagenda,sizeof (struct Tagenda),1,arqagenda);

}

fclose(arqagenda);

fclose(auxiliar);

remove("ARQAGEN.txt");

rename("AUXI.txt","ARQAGEN.txt");

printf("Registro excluido...\n\n");

}

else

printf("Ocorreu um erro durante o processo...");

}else

printf("Registro não cadastrado...\n\n");

rewind(arqagenda);

printf("Excluir outro registro? (s/n)...");

scanf("%s",resposta);

}while (strcmp(resposta,"s")==0 || strcmp(resposta,"S") ==0);

fclose(arqagenda);

}

return (0);

}

//Opcao 3

pesquisar()

{

int codigo;

char resposta[2]="N";

//r = abre um arquivo para leitura

arqagenda = fopen ("ARQAGEN.txt","r");

printf("\n\nPESQUISA DE ENTRADAS\n\n");

if (arqagenda == NULL)

{

printf("Ocorreu um erro ao abrir o arquivo !");

printf("Aperte algo para voltar ao menu...");

}

else

{

do{

printf("Digite o codigo... ");

scanf("%d",&codigo);

fread (&regagenda,sizeof (struct Tagenda),1,arqagenda);

while (!feof(arqagenda) && regagenda.cod != codigo)

{

fread (&regagenda,sizeof (struct Tagenda),1,arqagenda);

}

if (feof(arqagenda))

printf ("O numero não foi encontrado...\n");

else

{

printf("Nome..: %s\n",regagenda.nome);

printf("Fone..: %s\n",regagenda.fone);

}

//rewind = posiciona o cursor de volta ao inicio do arquivo

rewind(arqagenda);

printf("Procurar por outro numero? (s/n)... ");

scanf("%s",resposta);

}while (strcmp(resposta,"s")==0 || strcmp(resposta,"S")==0);

fclose(arqagenda);

}

return (0);

}

//Opcao 4

alterar()

{

char resposta [2]="N";

int cont=0, numero;

//r+ = abre um arquivo para atualizacao

arqagenda=fopen ("ARQAGEN.txt","r+");

printf("\n\nALTERAR REGISTRO\n\n");

if (arqagenda == NULL)

{

printf("Ocorreu um erro ao abrir o arquivo !");

printf("Aperte algo para voltar ao menu...");

}

else

{

do{

printf("Digite o numero...");

scanf("%d",&numero);

fread(&regagenda,sizeof(struct Tagenda),1,arqagenda);

while (!feof(arqagenda) && regagenda.cod != numero )

{

fread(&regagenda,sizeof(struct Tagenda),1,arqagenda);

cont++;

}

if (feof(arqagenda))

printf ("O numero não foi encontrado...\n\n");

else

{

printf("Nome...%s\n",regagenda.nome);

printf("Fone...%s\n",regagenda.fone);

rewind(arqagenda);

//fseek = posiciona o cursor (ponteiro) em um endereco especifico, tornando possivel leitura e escrita aleatoria

fseek(arqagenda,cont*(sizeof (struct Tagenda)),SEEK_SET);

printf("Novo nome.....");

scanf("%s",regagenda.nome);

printf("Novo fone.....");

scanf("%s",regagenda.fone);

fwrite(&regagenda,sizeof(struct Tagenda),1,arqagenda);

printf("Operacao concluida....\n\n");

}

rewind(arqagenda);

printf("Nova alteracao? (s/n)...");

scanf("%s",resposta);

}while (strcmp(resposta,"S")==0 || strcmp(resposta,"s")==0);

fclose(arqagenda);

}

return (0);

}

main(void)

{

char op='0';

//Testa se o arquivo já foi criado, caso contrario cria

if (fopen ("ARQAGEN.txt","r+") == NULL)

arqagenda = fopen ("ARQAGEN.txt","w");

if (arqagenda == NULL)

printf("Ocorreu um erro na criacao do arquivo !");

while (op!='5')

{

printf("AGENDA ELETRONICA\n\n");

printf("1. Incluir\n");

printf("2. Excluir\n");

printf("3. Pesquisar\n");

printf("4. Alterar\n");

printf("5. Sair\n");

printf("Digite sua escolha...");

scanf("%s",&op);

if (op != '5') {

switch (op) {

case '1': incluir(); break;

case '2': excluir(); break;

case '3': pesquisar(); break;

case '4': alterar(); break;

default: { printf("Por favor escolha somente uma das opcoes... aperte algo...");

break;

}

}

}

}

return (0);

}

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,4k
×
×
  • Criar Novo...