Jump to content
Fórum Script Brasil
  • 0

Arquivo com duplo encadeamento


Question

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 to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149192
    • Total Posts
      645447
×
×
  • Create New...