Ir para conteúdo
Fórum Script Brasil

MarcosAMS

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre MarcosAMS

MarcosAMS's Achievements

0

Reputação

  1. 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"); } } } }
×
×
  • Criar Novo...