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

Arquivo com duplo encadeamento


Fabio Stein

Pergunta

Olá queria saber se alguém consegue me ajudar com um problema, queria salvar os dados do programa em um arquivo mas não consegui achar uma maneira

 

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>


struct stNo {
     int info;
     char nome[50];
     char email[60];
     char celular[11];
     int idade;
     struct stNo *ant,*prox;
};


struct stNo *cria_no() {
    struct stNo *p;
     if ((p = (struct stNo *) malloc(sizeof(struct stNo))) == NULL)
         return NULL;
     else {
         p->prox = NULL;
         return p;
     }
}

void insereLista(struct stNo **list){
    struct stNo *p,*q;
    int n,idade1;
    char name[50],email1[60],celular1[11];
    fflush(stdin);
    printf("\nDigite o valor do nó:");
    scanf("%i",&n);
    fflush(stdin);
    printf("\nDigite o nome:");
    gets(name);
    fflush(stdin);
    printf("\nDigite o email:");
    gets(email1);
    fflush(stdin);
    printf("\nDigite o celular:");
    gets(celular1);
    fflush(stdin);
    printf("\nDigite o valor da idade:");
    scanf("%i",&idade1);
    fflush(stdin);
     if(*list==NULL){ //lista vazia
         p = cria_no();
         *list = p;
         p->ant = NULL;
         p->prox = NULL;
         p->info = n;
         p->idade = idade1;
         strcpy(p->nome,name);
         strcpy(p->email,email1);
         strcpy(p->celular,celular1);
         
     }else{
         p=*list;
         while(p->prox!=NULL)
             p=p->prox;
             q = cria_no();
             p->prox = q;
             q->prox = NULL;
             q->ant = p;
             q->info = n;
             q->idade = idade1;
             strcpy(q->nome,name);
             strcpy(q->email,email1);
             strcpy(q->celular,celular1);
         };
};

void mostraLista(struct stNo **list){
     struct stNo *p;
     if(*list!=NULL){
         p=*list;
         while(p->prox!=NULL){
             printf(" %i->",p->info);
             printf(" %s->",p->nome);
             p = p->prox;
         };
         printf(" %i->",p->info);
         printf(" %s",p->nome);
     }
     else printf("\nLista Vazia");
};

void visualizarLista(struct stNo **list){
     struct stNo *p;
     int n;
     char compNome[50];
     printf("\nDigite o nome: ");
      fflush(stdin);
    gets(compNome);
     if(*list!=NULL){
         p=*list;
         while(p->prox!=NULL && strcmp(compNome,p->nome) !=0 ){
            p = p->prox;
         };
        if(strcmp(compNome,p->nome)==0){
            printf("\nCódigo: %d",p->info);
            printf("\nNome: %s",p->nome);
            printf("\nEmail: %d",p->email);
            printf("\nCelular: %s",p->celular);
            printf("\nIdade: %d",p->idade);
        };
     }
     else printf("\nLista Vazia");
};

void alterarLista(struct stNo **list){
     struct stNo *p;
    int n,idade1;
    char name[50],email1[60],celular1[11];
     char compNome[50];
     printf("\nDigite o nome que sera alterado: ");
      fflush(stdin);
    gets(compNome);
     if(*list!=NULL){
         p=*list;
         while(p->prox!=NULL && strcmp(compNome,p->nome) !=0 ){
            p = p->prox;
         };
        if(strcmp(compNome,p->nome)==0){
            
    printf("\nDigite o novo valor do nó:");
    scanf("%i",&n);
    fflush(stdin);
    printf("\nDigite o novo nome:");
    gets(name);
    fflush(stdin);
    printf("\nDigite o novo email:");
    gets(email1);
    fflush(stdin);
    printf("\nDigite o novo celular:");
    gets(celular1);
    fflush(stdin);
    printf("\nDigite o novo valor da idade:");
    scanf("%i",&idade1);
    fflush(stdin);
             p->info = n;
             p->idade = idade1;
             strcpy(p->nome,name);
             strcpy(p->email,email1);
             strcpy(p->celular,celular1);
             
             printf("\nNovos dados do usuario: ");
            printf("\nCódigo: %d",p->info);
            printf("\nNome: %s",p->nome);
            printf("\nEmail: %d",p->email);
            printf("\nCelular: %s",p->celular);
            printf("\nIdade: %d",p->idade); 
    
        };
     }
     else printf("\nLista Vazia");
};

void excluirQualquer(struct stNo **list){
    
    struct stNo *p;
    char compNome[50];
    p = *list;
    if(*list==NULL){
        printf("\nLista Vazia");
    }else{
    
    
    printf("\nDigite o nome: ");
      fflush(stdin);
    gets(compNome);
    if(*list!=NULL) //lista vazia
    p = *list;
    while(p->prox!=NULL && strcmp(compNome,p->nome) !=0){
        p=p->prox;
    }      
         
         if(p->ant == NULL){
             *list = p->prox;
         }else{
             p->ant->prox = p->prox;         
         }
             
         if(p->prox != NULL)
         p->prox->ant = p->ant;
         free(p);
         printf("\nExcluido com sucesso. ");        
}
};

main(){
    setlocale(LC_ALL,"Portuguese");
     struct stNo *lista;
     int menu;
    lista = NULL; // inicializando a lista vazia

    do{
        system("cls");
        printf("\n");
        mostraLista(&lista);
        printf("\n\n");
        printf("[1-Inserir] ");
        printf("[2-Visualizar] ");
        printf("[3-Alterar] ");
        printf("[4-Excluir] ");
        printf("[5-Sair] ");
        printf("Opção:");
        scanf("%i",&menu);
        switch(menu){
            case 1 :    insereLista(&lista);
                        break;            
            case 2 :    visualizarLista(&lista);
                        break;
            case 3 :    alterarLista(&lista);
                        break;    
            case 4 :    excluirQualquer(&lista);
                        break;                    
            case 5 :    printf("\nSaindo...");
                        break;
            default:     printf("\nCódigo Inválido");
        }
        printf("\n");system("pause");
        }while(menu!=5);
}

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...