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",®agenda.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)
Pergunta
Guest wandey
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",®agenda.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(®agenda,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(®agenda,sizeof(struct Tagenda),1,arqagenda);
while (!feof(arqagenda) && regagenda.cod != codigo)
fread(®agenda,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(®agenda,sizeof(struct Tagenda),1,arqagenda);
while (!feof(arqagenda))
{
if (regagenda.cod != codigo)
fwrite(®agenda,sizeof(struct Tagenda),1,auxiliar);
fread(®agenda,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 (®agenda,sizeof (struct Tagenda),1,arqagenda);
while (!feof(arqagenda) && regagenda.cod != codigo)
{
fread (®agenda,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(®agenda,sizeof(struct Tagenda),1,arqagenda);
while (!feof(arqagenda) && regagenda.cod != numero )
{
fread(®agenda,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(®agenda,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
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.