Estou criando uma agenda telefonica com lista encadeada, eu tenho que inserir, imprimir na tela, localizar e modificar, localizar e remover, gerar txt e improtar txt, o meu problema é o seguinte, eu consigo gerar o txt mas na hora de importar que está o problema, no caso minha struct tem nome sobrenome e telefone, quando eu insiro os dados e crio um txt, na hora de importar ele lista meu contato e embaixo um contato com um monte de lixo de memoria se eu crio um txt com mais de 1 contato salva na hora de importar dai viara uma bagunça, estou o dia todo nisso, não sei mais o que fazer. Segue o codigo (Obrigado):
Pergunta
MarcosAMS
Boa Noite
Estou criando uma agenda telefonica com lista encadeada, eu tenho que inserir, imprimir na tela, localizar e modificar, localizar e remover, gerar txt e improtar txt, o meu problema é o seguinte, eu consigo gerar o txt mas na hora de importar que está o problema, no caso minha struct tem nome sobrenome e telefone, quando eu insiro os dados e crio um txt, na hora de importar ele lista meu contato e embaixo um contato com um monte de lixo de memoria se eu crio um txt com mais de 1 contato salva na hora de importar dai viara uma bagunça, estou o dia todo nisso, não sei mais o que fazer. Segue o codigo (Obrigado):
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
struct agenda
{
int id;
char nome [20];
char snome [20];
int tel;
struct agenda *prox;
};
struct agenda *p=NULL;
struct agenda *topo=NULL;
struct agenda *fim=NULL;
struct agenda *aux=NULL;
int opcao;
int codid,loc;
char insert;
int importar ();
int main ()
{
while (opcao!=6)
{
printf ("Menu \n");
printf ("[1]-Inserir\n");
printf ("[2]-Listar Todos\n");
printf ("[3]-Alterar\n");
printf ("[4]-Gerar arquivo\n");
printf ("[5]-Carregar Arquivo\n");
scanf ("%d",&opcao);
switch (opcao)
{
case 1:
{
printf ("1- Cadastrar Contato [s/N]\n");
scanf ("%s",&insert);
while (insert=='S'|| insert =='s')
{
p=(struct agenda*)malloc(sizeof(struct agenda));
if(p!=NULL);
{
codid++;
p->id=codid;
printf ("Digite o Nome: ");
scanf("%s",&(p->nome));
printf ("\n");
printf ("Digite o Sobrenome: ");
scanf("%s",&(p->snome));
printf ("\n");
printf ("Digite o Telefone: ");
scanf ("%d",&(p->tel));
printf ("\n");
p->prox=NULL;
if (topo==NULL)
topo=p;
else
fim->prox=p;
fim=p;
printf ("Cadastrar outro contato [s/N]\n");
scanf ("%s",&insert);
}
}
break;
}
case 2:
{
aux=topo;
while (aux)
{
printf("\n");
printf("Cadastro %d : Contato: %s %s - ",aux->id,aux->nome,aux->snome);
printf("Telefone %d",aux->tel);
aux=aux->prox;
printf ("\n");
}
break;
}
case 3:
{
printf ("Para localizar digite Numero do Cadastro:");
scanf ("%d",&loc);
aux=topo;
while (aux)
{
if(aux->id==loc)
{
printf("Contato: %s %s - ", aux->nome,aux->snome);
printf("Telefone %d ",aux->tel);
printf("\n");
printf ("Mudar o Nome: ");
scanf("%s",&p->nome);
printf ("\n");
printf ("Mudar o Sobrenome: ");
scanf("%s",&p->snome);
printf ("\n");
printf ("Telefone o Telefone: ");
scanf ("%d",&p->tel);
printf ("\n");
}
else
{
printf ("Contato não Localiazado\n");
}
aux=aux->prox;
}
break;
}
case 4:
{
FILE *FPTR;
FPTR = fopen ("agenda.txt","a");
aux=topo;
while (aux)
{
fprintf(FPTR,"%s\t",p->nome);
fprintf(FPTR,"%s\t",p->snome);
fprintf(FPTR,"%d\t",p->tel);
aux=aux->prox;
}
fclose(FPTR);
printf("Contato(s) Salvos");
break;
}
case 5:
{
FILE *FPTR = fopen("agenda.txt", "r");
if(FPTR==NULL)
printf("Ainda não Existe Arquivo de Contatos\n");
else
{
do
{
p=(struct agenda*)malloc(sizeof(struct agenda));
if(p!=NULL);
{
codid++;
p->id=codid;
fscanf(FPTR,"%s",&(p->nome));
fscanf(FPTR,"%s",&(p->snome));
fscanf (FPTR,"%d",&(p->tel));
p->prox=NULL;
if (topo==NULL)
topo=p;
else
fim->prox=p;
fim=p;
}
} while (!feof(FPTR));
}
fclose(FPTR);
printf ("Arquivo Importado\n");
break;
}
default:
{
printf("Comando invalido\n");
}
}
}
}
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.