Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
LRicardor

Linguagem c - problema com leitura de arquivo txt

Recommended Posts

Oi, pessoal. Sou novato aqui no fórum (e em programação) e tô com um problema num programa de cadastro de pessoas em C. Depois de muito tempo, consegui fazer o programa ler de um arquivo .txt (dados.txt), mas, apesar de ler, os dados não são visualizados em outras funções do programa (como listar). Acredito que seja porque os dados que são armazenados em "point" não são repassados para o resto do programa, mas não tenho certeza. Se alguém puder ajudar, agradeço.

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

 typedef struct lista{
     char nome[40];
     char rua[40];
     char bairro[40];
     char email[40];
     int telefone;
     char telefoneconvertido[40];
     char formacao[40];
     char local[40];
     char cargo[40];
     char idioma1[40];
     int tempo;
     char tempoconvertido[40];
     float salario;
     char salarioconvertido[40];
     int cpf;
     char cpfconvertido[40];
     unsigned long int codigo;
     struct lista* ant;
     struct lista* prox;
   }Lista;

   //Declaração de funções.
   Lista* inserir(Lista* primeiro);
   void listar(Lista* primeiro, Lista* point);
   Lista* excluir(Lista* primeiro);
   void alterar(Lista* primeiro);
   void pesquisar(Lista* primeiro);
   void carregar(Lista* primeiro, Lista* aux, Lista* point);
   void escrever(Lista* primeiro);

main()
{
   setlocale(LC_ALL, "Portuguese");
   //Declaração de variáveis
   Lista *primeiro= NULL;
   Lista *atual;
   Lista* aux;
   Lista* point;
   char opcao;
   carregar(primeiro, aux, point);

   //Artifício para repetir o programa.
   while(opcao!='s')
   {
     //Menu de opções
      printf(" ----------------------------------------------------------------------------\n");
      printf(" | ");printf("\t\t\t     RECRUTAMENTO ONLINE");printf("\t\t\t    |\n");
      printf(" ----------------------------------------------------------------------------\n");
      printf("   |-----------------------------------|\n");
      printf("   | <A>  Novo cadastro                |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <B>  Listar                       |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <C>  Excluir cadastro             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <D>  Alterar cadastro             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <E>  Pesquisar cadastro           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <F>  Sobre o programa             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <S>  Sair                         |\n");
      printf("   |-----------------------------------|");
      printf("\n\n\n\n");

      //Lendo a opcao do menu
      fflush(stdin);
      opcao= getch();

      //Menu de opções
      switch(opcao)
      {
         case 'A':
         case 'a':
              //Inserindo as pessoas.
              fflush(stdin);
              system("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t          NOVO CADASTRO     ");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              primeiro= inserir(primeiro);
         getch();
         system("cls");
         break;

         case 'B':
         case 'b':
              //Listando as pessoas.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t     PESSOAS CADASTRADAS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              listar(primeiro, point);
         getch();
         system("cls");
         break;

         case 'C':
         case 'c':
              //Excluindo pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t        EXCLUIR CADASTROS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              primeiro= excluir(primeiro);
         getch();
         system("cls");
         break;

         case 'D':
         case 'd':
              //Alterando pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       ALTERAR CADASTRADOS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              alterar(primeiro);
         getch();
         system("cls");
         break;

         case 'E':
         case 'e':
              //Pesquisando pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       PESQUISAR CADASTRADOS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              pesquisar(primeiro);
         getch();
         system("cls");
         break;

         case 'F':
         case 'f':
              //Fala um pouco sobre como funciona o programa.
              system ("cls");
              printf(" -----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       SOBRE O PROGRAMA");printf("\t\t\t             |\n");
              printf(" -----------------------------------------------------------------------------\n");
              printf(" |O programa foi criado com o conceito de que candidatos a determinadas vagas|\n");
              printf(" |                                                                           |\n");
              printf(" |de emprego poderiam ser cadastrados, adicionando dados relevantes para o   |\n");
              printf(" |                                                                           |\n");
              printf(" |empregador. O programa é destinado para o empregador que queira organizar  |\n");
              printf(" |                                                                           |\n");
              printf(" |os candidatos e tornar mais fácil o recrutamento. O programa conta com     |\n");
              printf(" |                                                                           |\n");
              printf(" |5 funcionalidades principais: cadastro, listagem de candidatos, alteração  |\n");
              printf(" |                                                                           |\n");
              printf(" |de dados, exclusão de cadastro e pesquisa de candidatos.                   |\n");
              printf(" -----------------------------------------------------------------------------\n");
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
              getch();
              system("cls");
         break;

         case 'S':
         case 's':
              //Artifício para sair do programa.
              escrever(primeiro);
              opcao='s';
         break;

         default:
              //Artifício que previne a situação de um usuário qualquer, digitar uma opcão inexistente no menu.
              system("cls");
         break;
      }
   }
}

Lista* inserir (Lista *primeiro){
     setlocale(LC_ALL, "Portuguese");
     Lista pessoa;
     Lista *atual= primeiro;
     char identificador= 'F';

     //Lendo as informações do candidato.
     printf("  Nome: ");
     fflush (stdin); fgets(pessoa.nome, 40, stdin); printf ("\n");
     printf("  Rua: ");
     fflush (stdin); fgets(pessoa.rua, 40, stdin); printf ("\n");
     printf("  Bairro: ");
     fflush (stdin); fgets(pessoa.bairro, 40, stdin); printf ("\n");
     printf("  E-mail: ");
     fflush (stdin); fgets(pessoa.email, 40, stdin); printf ("\n");
     printf("  Telefone: ");
     scanf("%d",&pessoa.telefone);printf ("\n");
     printf("  Formação: ");
     fflush (stdin); fgets(pessoa.formacao, 40, stdin); printf ("\n");
     printf("  Local de Formação: ");
     fflush (stdin); fgets(pessoa.local, 40, stdin); printf ("\n");
     printf("  Cargo Pretendido: ");
     fflush (stdin); fgets(pessoa.cargo, 40, stdin); printf ("\n");
     printf("  Língua Estrangeira: ");
     fflush (stdin); fgets(pessoa.idioma1, 40, stdin); printf ("\n");
     printf("  Tempo de experiência no cargo(em anos): ");
     scanf("%d",&pessoa.tempo);printf ("\n");
     printf("  Pretensão salarial: ");
     scanf("%f",&pessoa.salario);printf ("\n");
     printf("  CPF: ");
     scanf("%d",&pessoa.cpf, 9);printf ("\n");
     printf("  Código: ");
     scanf("%u",&pessoa.codigo);printf ("\n");

     //Verificando se o cadastro já existe.
     for(atual=primeiro; atual!=NULL; atual=atual->prox){
        if(atual->codigo==pessoa.codigo){
            identificador= 'V';
            break;
        }
     }

     if(identificador!='V' && (strlen(pessoa.nome)!=1 && strlen(pessoa.rua)!=1)){
         //Alocando os espaços e guardando as informações do candidato.
         Lista* NovoCandidato=(Lista*) malloc (sizeof(Lista));
         strcpy(NovoCandidato->nome, pessoa.nome);
         strcpy(NovoCandidato->rua, pessoa.rua);
         strcpy(NovoCandidato->bairro, pessoa.bairro);
         strcpy(NovoCandidato->email, pessoa.email);
         NovoCandidato->telefone= pessoa.telefone;
         strcpy(NovoCandidato->formacao, pessoa.formacao);
         strcpy(NovoCandidato->cargo, pessoa.cargo);
         strcpy(NovoCandidato->local, pessoa.local);
         strcpy(NovoCandidato->idioma1, pessoa.idioma1);
         NovoCandidato->tempo= pessoa.tempo;
         NovoCandidato->salario= pessoa.salario;
         NovoCandidato->cpf= pessoa.cpf;
         NovoCandidato->codigo= pessoa.codigo;
         NovoCandidato->prox= primeiro;
         printf("  Cadastro realizado com sucesso.");
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return NovoCandidato;
     }else{
         printf("  Cadastro inválido.");
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return primeiro;
     }
}

void listar (Lista* primeiro, Lista* point){
     setlocale(LC_ALL, "Portuguese");
     Lista* atual;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.

     //Imprimindo os candidatos da lista, e suas repectivas informações.
     for(atual= primeiro ; atual!= NULL; atual= atual->prox){
        printf("\n  Nome: ");
        printf("%s", atual->nome);
        printf("\n  Rua: ");
        printf("%s", atual->rua);
        printf("\n  Bairro: ");
        printf("%s", atual->bairro);
        printf("\n  E-mail: ");
        printf("%s", atual->email);
        printf("\n  Telefone: ");
        printf("%d", atual->telefone);
        printf("\n\n  Formação: ");
        printf("%s", atual->formacao);
        printf("\n  Local de Formação: ");
        printf("%s", atual->local);
        printf("\n  Cargo Pretendido: ");
        printf("%s", atual->cargo);
        printf("\n  Língua Estrangeira: ");
        printf("%s", atual->idioma1);
        printf("\n  Tempo de experiência no cargo(em anos): ");
        printf("%d", atual->tempo);
        printf("\n\n  Pretensão Salarial: ");
        printf("%.2f", atual->salario);
        printf("\n\n  CPF: ");
        printf("%d", atual->cpf);
        printf("\n\n  Código: ");
        printf("%u", atual->codigo);
        printf("\n\n");
     }
     if(primeiro==NULL)
        printf("  Nenhum candidato cadastrado.");
     printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}

Lista* excluir(Lista *primeiro){

     Lista *anterior= NULL;//Ponteiro para saber o elemento anterior ao elemento atual da lista.
     Lista *atual= primeiro;//Ponteiro para percorrer a lista sem perder o primeiro elemento da lista.
     unsigned long int codigo=0;

     //Requisitando e lendo o código do candidato a ser excluído.
     printf("  Código do candidato a ser excluído: ");
     fflush(stdin);
     scanf("%u",&codigo);

     //Procurando o candidato na lista.
     while(atual!= NULL && atual->codigo!=codigo){
        anterior= atual;
        atual= atual->prox;
     }

     //Mensagem caso o candidato não seja encontrado.
     if(atual==NULL){
        printf("\n  Candidato não encontrado.");
        printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
        return primeiro;
     }

     //Excluindo o primeiro candidato da lista.
     if(anterior==NULL){
        printf("\n  Conteúdo excluído com sucesso.");
        primeiro= atual->prox;
     //Excluindo um candidato do meio da lista.
     }else{
        printf("\n  Conteúdo excluído com sucesso.");
        anterior->prox= atual->prox;
     }

     //Desalocando o espaço da memória.
     free(atual);
     printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
     return primeiro;
}

//Função para alterar candidato.
void alterar(Lista* primeiro){
     char nome_substituto[40], rua_substituto[40], bairro_substituto[40], email_substituto[40], formacao_substituto[40], local_substituto[40], cargo_substituto[40], idioma1_substituto[40];
     char telefone_substituto[40], tempo_substituto[40], cpf_substituto[40];
     char salario_substituto[40];
     unsigned long int codigo;
     Lista* atual=primeiro;

     //Requisitando e lendo o código do candidato a ser alterado.
     printf("  Código do candidato a ser alterado: ");
     fflush(stdin);
     scanf("%u",&codigo);

     //Procurando o candidato na lista.
     while(atual!= NULL && atual->codigo!=codigo){
        atual= atual->prox;
     }

     //Alterando os dados do candidato.
     if(atual!=NULL){
        sprintf(atual->telefoneconvertido, "%i", atual->telefone);
        sprintf(atual->tempoconvertido, "%i", atual->tempo);
        sprintf(atual->cpfconvertido, "%i", atual->cpf);
        sprintf(atual->salarioconvertido, "%f", atual->salario);
        printf("\n  Novo nome: ");
        fflush (stdin); fgets(nome_substituto, 40, stdin);
        strcpy(atual->nome,nome_substituto);
        printf("\n  Nova rua: ");
        fflush (stdin); fgets(rua_substituto, 40, stdin);
        strcpy(atual->rua,rua_substituto);
        printf("\n  Novo bairro: ");
        fflush (stdin); fgets(bairro_substituto, 40, stdin);
        strcpy(atual->bairro,bairro_substituto);
        printf("\n  Novo e-mail: ");
        fflush (stdin); fgets(email_substituto, 40, stdin);
        strcpy(atual->email,email_substituto);
        printf("\n  Novo telefone: ");
        fflush (stdin); fgets(telefone_substituto, 40, stdin);
        strcpy(atual->telefoneconvertido,telefone_substituto);
        atual->telefone=atoi(atual->telefoneconvertido);
        printf("\n  Nova formação: ");
        fflush (stdin); fgets(formacao_substituto, 40, stdin);
        strcpy(atual->formacao,formacao_substituto);
        printf("\n  Novo local: ");
        fflush (stdin); fgets(local_substituto, 40, stdin);
        strcpy(atual->local,local_substituto);
        printf("\n  Novo cargo: ");
        fflush (stdin); fgets(cargo_substituto, 40, stdin);
        strcpy(atual->cargo,cargo_substituto);
        printf("\n  Nova Língua Estrangeira: ");
        fflush (stdin); fgets(idioma1_substituto, 40, stdin);
        strcpy(atual->idioma1,idioma1_substituto);
        printf("\n  Novo tempo de experiência no cargo: ");
        fflush (stdin); fgets(tempo_substituto, 40, stdin);
        strcpy(atual->tempoconvertido,tempo_substituto);
        atual->tempo=atoi(atual->tempoconvertido);
        printf("\n  Nova pretensão salarial: ");
        fflush (stdin); fgets(salario_substituto, 40, stdin);
        strcpy(atual->salarioconvertido,salario_substituto);
        atual->salario=atoi(atual->salarioconvertido);
        printf("\n  Novo cpf: ");
        fflush (stdin); fgets(cpf_substituto, 40, stdin);
        strcpy(atual->cpfconvertido,cpf_substituto);
        atual->cpf=atoi(atual->cpfconvertido);
        printf("  Dados alterados com sucesso.");
     }else{
        printf("\n  Candidato não encontrado.");
     }
     printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}

void pesquisar (Lista* primeiro){
    setlocale(LC_ALL, "Portuguese");
    char opcao;
    int codigopesquisa;
    int salariopesquisa;
    int tempopesquisa;
    char nomepesquisa[40];
    char formacaopesquisa[40];
    char cargopesquisa[40];
    char idioma1pesquisa[40];
      printf("   |-----------------------------------| \n");
      printf("   | <A>  Nome                         |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <B>  Código                       |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <C>  Formação                     |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <D>  Cargo                        |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <E>  Língua Estrangeira           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <F>  Salário Pretendido           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <G>  Tempo de Experiência         |\n");
      printf("   |-----------------------------------|\n");
      printf("\n\n\n\n");

      //Lendo a opcao do menu
      fflush(stdin);
      opcao= getch();

      //Menu de opções
      switch(opcao)
      {
         case 'A':
         case 'a':
              //Pesquisando por nome.
              system ("cls");
              Lista* atualnome;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Nome a ser pesquisado: ");
              fflush (stdin); fgets(nomepesquisa, 40, stdin);
              for(atualnome= primeiro ; atualnome!= NULL; atualnome= atualnome->prox){
                if(strcmp(atualnome->nome, nomepesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualnome->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualnome->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualnome->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualnome->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualnome->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualnome->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualnome->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualnome->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualnome->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualnome->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualnome->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualnome->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualnome->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'B':
         case 'b':
              //Pesquisando por código.
              system ("cls");
              Lista* atualcodigo;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Código a ser pesquisado: ");
              scanf("%d", &codigopesquisa);
              for(atualcodigo= primeiro ; atualcodigo!= NULL; atualcodigo= atualcodigo->prox){
                if(atualcodigo->codigo==codigopesquisa){
                    printf("\n  Nome: ");
                    printf("%s", atualcodigo->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualcodigo->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualcodigo->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualcodigo->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualcodigo->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualcodigo->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualcodigo->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualcodigo->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualcodigo->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualcodigo->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualcodigo->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualcodigo->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualcodigo->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'C':
         case 'c':
              //Pesquisando por formação.
              system ("cls");
              Lista* atualformacao;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Formação a ser pesquisada: ");
              fflush (stdin); fgets(formacaopesquisa, 40, stdin);
              for(atualformacao= primeiro ; atualformacao!= NULL; atualformacao= atualformacao->prox){
                if(strcmp(atualformacao->formacao, formacaopesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualformacao->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualformacao->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualformacao->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualformacao->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualformacao->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualformacao->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualformacao->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualformacao->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualformacao->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualformacao->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualformacao->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualformacao->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualformacao->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'D':
         case 'd':
              //Pesquisando por cargo.
              system ("cls");
              Lista* atualcargo;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Cargo a ser pesquisado: ");
              fflush (stdin); fgets(cargopesquisa, 40, stdin);
              for(atualcargo= primeiro ; atualcargo!= NULL; atualcargo= atualcargo->prox){
                if(strcmp(atualcargo->cargo, cargopesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualcargo->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualcargo->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualcargo->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualcargo->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualcargo->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualcargo->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualcargo->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualcargo->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualcargo->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualcargo->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualcargo->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualcargo->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualcargo->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'E':
         case 'e':
              //Pesquisando por língua estrangeira.
              system ("cls");
              Lista* atualidioma1;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Língua estrangeira a ser pesquisada: ");
              fflush (stdin); fgets(idioma1pesquisa, 40, stdin);
              for(atualidioma1= primeiro ; atualidioma1!= NULL; atualidioma1= atualidioma1->prox){
                if(strcmp(atualidioma1->idioma1, idioma1pesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualidioma1->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualidioma1->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualidioma1->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualidioma1->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualidioma1->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualidioma1->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualidioma1->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualidioma1->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualidioma1->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualidioma1->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualidioma1->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualidioma1->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualidioma1->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'F':
         case 'f':
              //Pesquisando por salário.
              system ("cls");
              Lista* atualsalario;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Salário máximo a ser pesquisado: ");
              scanf("%d", &salariopesquisa);
              for(atualsalario= primeiro ; atualsalario!= NULL; atualsalario= atualsalario->
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>

 typedef struct lista{
     char nome[40];
     char rua[40];
     char bairro[40];
     char email[40];
     int telefone;
     char telefoneconvertido[40];
     char formacao[40];
     char local[40];
     char cargo[40];
     char idioma1[40];
     int tempo;
     char tempoconvertido[40];
     float salario;
     char salarioconvertido[40];
     int cpf;
     char cpfconvertido[40];
     unsigned long int codigo;
     struct lista* ant;
     struct lista* prox;
   }Lista;

   //Declaração de funções.
   Lista* inserir(Lista* primeiro);
   void listar(Lista* primeiro, Lista* point);
   Lista* excluir(Lista* primeiro);
   void alterar(Lista* primeiro);
   void pesquisar(Lista* primeiro);
   void carregar(Lista* primeiro, Lista* aux, Lista* point);
   void escrever(Lista* primeiro);

main()
{
   setlocale(LC_ALL, "Portuguese");
   //Declaração de variáveis
   Lista *primeiro= NULL;
   Lista *atual;
   Lista* aux;
   Lista* point;
   char opcao;
   carregar(primeiro, aux, point);

   //Artifício para repetir o programa.
   while(opcao!='s')
   {
     //Menu de opções
      printf(" ----------------------------------------------------------------------------\n");
      printf(" | ");printf("\t\t\t     RECRUTAMENTO ONLINE");printf("\t\t\t    |\n");
      printf(" ----------------------------------------------------------------------------\n");
      printf("   |-----------------------------------|\n");
      printf("   | <A>  Novo cadastro                |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <B>  Listar                       |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <C>  Excluir cadastro             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <D>  Alterar cadastro             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <E>  Pesquisar cadastro           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <F>  Sobre o programa             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <S>  Sair                         |\n");
      printf("   |-----------------------------------|");
      printf("\n\n\n\n");

      //Lendo a opcao do menu
      fflush(stdin);
      opcao= getch();

      //Menu de opções
      switch(opcao)
      {
         case 'A':
         case 'a':
              //Inserindo as pessoas.
              fflush(stdin);
              system("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t          NOVO CADASTRO     ");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              primeiro= inserir(primeiro);
         getch();
         system("cls");
         break;

         case 'B':
         case 'b':
              //Listando as pessoas.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t     PESSOAS CADASTRADAS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              listar(primeiro, point);
         getch();
         system("cls");
         break;

         case 'C':
         case 'c':
              //Excluindo pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t        EXCLUIR CADASTROS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              primeiro= excluir(primeiro);
         getch();
         system("cls");
         break;

         case 'D':
         case 'd':
              //Alterando pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       ALTERAR CADASTRADOS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              alterar(primeiro);
         getch();
         system("cls");
         break;

         case 'E':
         case 'e':
              //Pesquisando pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       PESQUISAR CADASTRADOS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              pesquisar(primeiro);
         getch();
         system("cls");
         break;

         case 'F':
         case 'f':
              //Fala um pouco sobre como funciona o programa.
              system ("cls");
              printf(" -----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       SOBRE O PROGRAMA");printf("\t\t\t             |\n");
              printf(" -----------------------------------------------------------------------------\n");
              printf(" |O programa foi criado com o conceito de que candidatos a determinadas vagas|\n");
              printf(" |                                                                           |\n");
              printf(" |de emprego poderiam ser cadastrados, adicionando dados relevantes para o   |\n");
              printf(" |                                                                           |\n");
              printf(" |empregador. O programa é destinado para o empregador que queira organizar  |\n");
              printf(" |                                                                           |\n");
              printf(" |os candidatos e tornar mais fácil o recrutamento. O programa conta com     |\n");
              printf(" |                                                                           |\n");
              printf(" |5 funcionalidades principais: cadastro, listagem de candidatos, alteração  |\n");
              printf(" |                                                                           |\n");
              printf(" |de dados, exclusão de cadastro e pesquisa de candidatos.                   |\n");
              printf(" -----------------------------------------------------------------------------\n");
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
              getch();
              system("cls");
         break;

         case 'S':
         case 's':
              //Artifício para sair do programa.
              escrever(primeiro);
              opcao='s';
         break;

         default:
              //Artifício que previne a situação de um usuário qualquer, digitar uma opcão inexistente no menu.
              system("cls");
         break;
      }
   }
}

Lista* inserir (Lista *primeiro){
     setlocale(LC_ALL, "Portuguese");
     Lista pessoa;
     Lista *atual= primeiro;
     char identificador= 'F';

     //Lendo as informações do candidato.
     printf("  Nome: ");
     fflush (stdin); fgets(pessoa.nome, 40, stdin); printf ("\n");
     printf("  Rua: ");
     fflush (stdin); fgets(pessoa.rua, 40, stdin); printf ("\n");
     printf("  Bairro: ");
     fflush (stdin); fgets(pessoa.bairro, 40, stdin); printf ("\n");
     printf("  E-mail: ");
     fflush (stdin); fgets(pessoa.email, 40, stdin); printf ("\n");
     printf("  Telefone: ");
     scanf("%d",&pessoa.telefone);printf ("\n");
     printf("  Formação: ");
     fflush (stdin); fgets(pessoa.formacao, 40, stdin); printf ("\n");
     printf("  Local de Formação: ");
     fflush (stdin); fgets(pessoa.local, 40, stdin); printf ("\n");
     printf("  Cargo Pretendido: ");
     fflush (stdin); fgets(pessoa.cargo, 40, stdin); printf ("\n");
     printf("  Língua Estrangeira: ");
     fflush (stdin); fgets(pessoa.idioma1, 40, stdin); printf ("\n");
     printf("  Tempo de experiência no cargo(em anos): ");
     scanf("%d",&pessoa.tempo);printf ("\n");
     printf("  Pretensão salarial: ");
     scanf("%f",&pessoa.salario);printf ("\n");
     printf("  CPF: ");
     scanf("%d",&pessoa.cpf, 9);printf ("\n");
     printf("  Código: ");
     scanf("%u",&pessoa.codigo);printf ("\n");

     //Verificando se o cadastro já existe.
     for(atual=primeiro; atual!=NULL; atual=atual->prox){
        if(atual->codigo==pessoa.codigo){
            identificador= 'V';
            break;
        }
     }

     if(identificador!='V' && (strlen(pessoa.nome)!=1 && strlen(pessoa.rua)!=1)){
         //Alocando os espaços e guardando as informações do candidato.
         Lista* NovoCandidato=(Lista*) malloc (sizeof(Lista));
         strcpy(NovoCandidato->nome, pessoa.nome);
         strcpy(NovoCandidato->rua, pessoa.rua);
         strcpy(NovoCandidato->bairro, pessoa.bairro);
         strcpy(NovoCandidato->email, pessoa.email);
         NovoCandidato->telefone= pessoa.telefone;
         strcpy(NovoCandidato->formacao, pessoa.formacao);
         strcpy(NovoCandidato->cargo, pessoa.cargo);
         strcpy(NovoCandidato->local, pessoa.local);
         strcpy(NovoCandidato->idioma1, pessoa.idioma1);
         NovoCandidato->tempo= pessoa.tempo;
         NovoCandidato->salario= pessoa.salario;
         NovoCandidato->cpf= pessoa.cpf;
         NovoCandidato->codigo= pessoa.codigo;
         NovoCandidato->prox= primeiro;
         printf("  Cadastro realizado com sucesso.");
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return NovoCandidato;
     }else{
         printf("  Cadastro inválido.");
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return primeiro;
     }
}

void listar (Lista* primeiro, Lista* point){
     setlocale(LC_ALL, "Portuguese");
     Lista* atual;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.

     //Imprimindo os candidatos da lista, e suas repectivas informações.
     for(atual= primeiro ; atual!= NULL; atual= atual->prox){
        printf("\n  Nome: ");
        printf("%s", atual->nome);
        printf("\n  Rua: ");
        printf("%s", atual->
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>

 typedef struct lista{
     char nome[40];
     char rua[40];
     char bairro[40];
     char email[40];
     int telefone;
     char telefoneconvertido[40];
     char formacao[40];
     char local[40];
     char cargo[40];
     char idioma1[40];
     int tempo;
     char tempoconvertido[40];
     float salario;
     char salarioconvertido[40];
     int cpf;
     char cpfconvertido[40];
     unsigned long int codigo;
     struct lista* ant;
     struct lista* prox;
   }Lista;

   //Declaração de funções.
   Lista* inserir(Lista* primeiro);
   void listar(Lista* primeiro, Lista* point);
   Lista* excluir(Lista* primeiro);
   void alterar(Lista* primeiro);
   void pesquisar(Lista* primeiro);
   void carregar(Lista* primeiro, Lista* aux, Lista* point);
   void escrever(Lista* primeiro);

main()
{
   setlocale(LC_ALL, "Portuguese");
   //Declaração de variáveis
   Lista *primeiro= NULL;
   Lista *atual;
   Lista* aux;
   Lista* point;
   char opcao;
   carregar(primeiro, aux, point);

   //Artifício para repetir o programa.
   while(opcao!='s')
   {
     //Menu de opções
      printf(" ----------------------------------------------------------------------------\n");
      printf(" | ");printf("\t\t\t     RECRUTAMENTO ONLINE");printf("\t\t\t    |\n");
      printf(" ----------------------------------------------------------------------------\n");
      printf("   |-----------------------------------|\n");
      printf("   | <A>  Novo cadastro                |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <B>  Listar                       |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <C>  Excluir cadastro             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <D>  Alterar cadastro             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <E>  Pesquisar cadastro           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <F>  Sobre o programa             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <S>  Sair                         |\n");
      printf("   |-----------------------------------|");
      printf("\n\n\n\n");

      //Lendo a opcao do menu
      fflush(stdin);
      opcao= getch();

      //Menu de opções
      switch(opcao)
      {
         case 'A':
         case 'a':
              //Inserindo as pessoas.
              fflush(stdin);
              system("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t          NOVO CADASTRO     ");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              primeiro= inserir(primeiro);
         getch();
         system("cls");
         break;

         case 'B':
         case 'b':
              //Listando as pessoas.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t     PESSOAS CADASTRADAS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              listar(primeiro, point);
         getch();
         system("cls");
         break;

         case 'C':
         case 'c':
              //Excluindo pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t        EXCLUIR CADASTROS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              primeiro= excluir(primeiro);
         getch();
         system("cls");
         break;

         case 'D':
         case 'd':
              //Alterando pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       ALTERAR CADASTRADOS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              alterar(primeiro);
         getch();
         system("cls");
         break;

         case 'E':
         case 'e':
              //Pesquisando pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       PESQUISAR CADASTRADOS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              pesquisar(primeiro);
         getch();
         system("cls");
         break;

         case 'F':
         case 'f':
              //Fala um pouco sobre como funciona o programa.
              system ("cls");
              printf(" -----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       SOBRE O PROGRAMA");printf("\t\t\t             |\n");
              printf(" -----------------------------------------------------------------------------\n");
              printf(" |O programa foi criado com o conceito de que candidatos a determinadas vagas|\n");
              printf(" |                                                                           |\n");
              printf(" |de emprego poderiam ser cadastrados, adicionando dados relevantes para o   |\n");
              printf(" |                                                                           |\n");
              printf(" |empregador. O programa é destinado para o empregador que queira organizar  |\n");
              printf(" |                                                                           |\n");
              printf(" |os candidatos e tornar mais fácil o recrutamento. O programa conta com     |\n");
              printf(" |                                                                           |\n");
              printf(" |5 funcionalidades principais: cadastro, listagem de candidatos, alteração  |\n");
              printf(" |                                                                           |\n");
              printf(" |de dados, exclusão de cadastro e pesquisa de candidatos.                   |\n");
              printf(" -----------------------------------------------------------------------------\n");
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
              getch();
              system("cls");
         break;

         case 'S':
         case 's':
              //Artifício para sair do programa.
              escrever(primeiro);
              opcao='s';
         break;

         default:
              //Artifício que previne a situação de um usuário qualquer, digitar uma opcão inexistente no menu.
              system("cls");
         break;
      }
   }
}

Lista* inserir (Lista *primeiro){
     setlocale(LC_ALL, "Portuguese");
     Lista pessoa;
     Lista *atual= primeiro;
     char identificador= 'F';

     //Lendo as informações do candidato.
     printf("  Nome: ");
     fflush (stdin); fgets(pessoa.nome, 40, stdin); printf ("\n");
     printf("  Rua: ");
     fflush (stdin); fgets(pessoa.rua, 40, stdin); printf ("\n");
     printf("  Bairro: ");
     fflush (stdin); fgets(pessoa.bairro, 40, stdin); printf ("\n");
     printf("  E-mail: ");
     fflush (stdin); fgets(pessoa.email, 40, stdin); printf ("\n");
     printf("  Telefone: ");
     scanf("%d",&pessoa.telefone);printf ("\n");
     printf("  Formação: ");
     fflush (stdin); fgets(pessoa.formacao, 40, stdin); printf ("\n");
     printf("  Local de Formação: ");
     fflush (stdin); fgets(pessoa.local, 40, stdin); printf ("\n");
     printf("  Cargo Pretendido: ");
     fflush (stdin); fgets(pessoa.cargo, 40, stdin); printf ("\n");
     printf("  Língua Estrangeira: ");
     fflush (stdin); fgets(pessoa.idioma1, 40, stdin); printf ("\n");
     printf("  Tempo de experiência no cargo(em anos): ");
     scanf("%d",&pessoa.tempo);printf ("\n");
     printf("  Pretensão salarial: ");
     scanf("%f",&pessoa.salario);printf ("\n");
     printf("  CPF: ");
     scanf("%d",&pessoa.cpf, 9);printf ("\n");
     printf("  Código: ");
     scanf("%u",&pessoa.codigo);printf ("\n");

     //Verificando se o cadastro já existe.
     for(atual=primeiro; atual!=NULL; atual=atual->prox){
        if(atual->codigo==pessoa.codigo){
            identificador= 'V';
            break;
        }
     }

     if(identificador!='V' && (strlen(pessoa.nome)!=1 && strlen(pessoa.rua)!=1)){
         //Alocando os espaços e guardando as informações do candidato.
         Lista* NovoCandidato=(Lista*) malloc (sizeof(Lista));
         strcpy(NovoCandidato->nome, pessoa.nome);
         strcpy(NovoCandidato->rua, pessoa.rua);
         strcpy(NovoCandidato->bairro, pessoa.bairro);
         strcpy(NovoCandidato->email, pessoa.email);
         NovoCandidato->telefone= pessoa.telefone;
         strcpy(NovoCandidato->formacao, pessoa.formacao);
         strcpy(NovoCandidato->cargo, pessoa.cargo);
         strcpy(NovoCandidato->local, pessoa.local);
         strcpy(NovoCandidato->idioma1, pessoa.idioma1);
         NovoCandidato->tempo= pessoa.tempo;
         NovoCandidato->salario= pessoa.salario;
         NovoCandidato->cpf= pessoa.cpf;
         NovoCandidato->codigo= pessoa.codigo;
         NovoCandidato->prox= primeiro;
         printf("  Cadastro realizado com sucesso.");
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return NovoCandidato;
     }else{
         printf("  Cadastro inválido.");
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return primeiro;
     }
}

void listar (Lista* primeiro, Lista* point){
     setlocale(LC_ALL, "Portuguese");
     Lista* atual;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.

     //Imprimindo os candidatos da lista, e suas repectivas informações.
     for(atual= primeiro ; atual!= NULL; atual= atual->prox){
        printf("\n  Nome: ");
        printf("%s", atual->nome);
        printf("\n  Rua: ");
        printf("%s", atual->rua);
        printf("\n  Bairro: ");
        printf("%s", atual->bairro);
        printf("\n  E-mail: ");
        printf("%s", atual->email);
        printf("\n  Telefone: ");
        printf("%d", atual->telefone);
        printf("\n\n  Formação: ");
        printf("%s", atual->formacao);
        printf("\n  Local de Formação: ");
        printf("%s", atual->local);
        printf("\n  Cargo Pretendido: ");
        printf("%s", atual->cargo);
        printf("\n  Língua Estrangeira: ");
        printf("%s", atual->idioma1);
        printf("\n  Tempo de experiência no cargo(em anos): ");
        printf("%d", atual->tempo);
        printf("\n\n  Pretensão Salarial: ");
        printf("%.2f", atual->salario);
        printf("\n\n  CPF: ");
        printf("%d", atual->cpf);
        printf("\n\n  Código: ");
        printf("%u", atual->codigo);
        printf("\n\n");
     }
     if(primeiro==NULL)
        printf("  Nenhum candidato cadastrado.");
     printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}

Lista* excluir(Lista *primeiro){

     Lista *anterior= NULL;//Ponteiro para saber o elemento anterior ao elemento atual da lista.
     Lista *atual= primeiro;//Ponteiro para percorrer a lista sem perder o primeiro elemento da lista.
     unsigned long int codigo=0;

     //Requisitando e lendo o código do candidato a ser excluído.
     printf("  Código do candidato a ser excluído: ");
     fflush(stdin);
     scanf("%u",&codigo);

     //Procurando o candidato na lista.
     while(atual!= NULL && atual->codigo!=codigo){
        anterior= atual;
        atual= atual->prox;
     }

     //Mensagem caso o candidato não seja encontrado.
     if(atual==NULL){
        printf("\n  Candidato não encontrado.");
        printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
        return primeiro;
     }

     //Excluindo o primeiro candidato da lista.
     if(anterior==NULL){
        printf("\n  Conteúdo excluído com sucesso.");
        primeiro= atual->prox;
     //Excluindo um candidato do meio da lista.
     }else{
        printf("\n  Conteúdo excluído com sucesso.");
        anterior->prox= atual->prox;
     }

     //Desalocando o espaço da memória.
     free(atual);
     printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
     return primeiro;
}

//Função para alterar candidato.
void alterar(Lista* primeiro){
     char nome_substituto[40], rua_substituto[40], bairro_substituto[40], email_substituto[40], formacao_substituto[40], local_substituto[40], cargo_substituto[40], idioma1_substituto[40];
     char telefone_substituto[40], tempo_substituto[40], cpf_substituto[40];
     char salario_substituto[40];
     unsigned long int codigo;
     Lista* atual=primeiro;

     //Requisitando e lendo o código do candidato a ser alterado.
     printf("  Código do candidato a ser alterado: ");
     fflush(stdin);
     scanf("%u",&codigo);

     //Procurando o candidato na lista.
     while(atual!= NULL && atual->codigo!=codigo){
        atual= atual->prox;
     }

     //Alterando os dados do candidato.
     if(atual!=NULL){
        sprintf(atual->telefoneconvertido, "%i", atual->telefone);
        sprintf(atual->tempoconvertido, "%i", atual->tempo);
        sprintf(atual->cpfconvertido, "%i", atual->cpf);
        sprintf(atual->salarioconvertido, "%f", atual->salario);
        printf("\n  Novo nome: ");
        fflush (stdin); fgets(nome_substituto, 40, stdin);
        strcpy(atual->nome,nome_substituto);
        printf("\n  Nova rua: ");
        fflush (stdin); fgets(rua_substituto, 40, stdin);
        strcpy(atual->rua,rua_substituto);
        printf("\n  Novo bairro: ");
        fflush (stdin); fgets(bairro_substituto, 40, stdin);
        strcpy(atual->bairro,bairro_substituto);
        printf("\n  Novo e-mail: ");
        fflush (stdin); fgets(email_substituto, 40, stdin);
        strcpy(atual->email,email_substituto);
        printf("\n  Novo telefone: ");
        fflush (stdin); fgets(telefone_substituto, 40, stdin);
        strcpy(atual->telefoneconvertido,telefone_substituto);
        atual->telefone=atoi(atual->telefoneconvertido);
        printf("\n  Nova formação: ");
        fflush (stdin); fgets(formacao_substituto, 40, stdin);
        strcpy(atual->formacao,formacao_substituto);
        printf("\n  Novo local: ");
        fflush (stdin); fgets(local_substituto, 40, stdin);
        strcpy(atual->local,local_substituto);
        printf("\n  Novo cargo: ");
        fflush (stdin); fgets(cargo_substituto, 40, stdin);
        strcpy(atual->cargo,cargo_substituto);
        printf("\n  Nova Língua Estrangeira: ");
        fflush (stdin); fgets(idioma1_substituto, 40, stdin);
        strcpy(atual->idioma1,idioma1_substituto);
        printf("\n  Novo tempo de experiência no cargo: ");
        fflush (stdin); fgets(tempo_substituto, 40, stdin);
        strcpy(atual->tempoconvertido,tempo_substituto);
        atual->tempo=atoi(atual->tempoconvertido);
        printf("\n  Nova pretensão salarial: ");
        fflush (stdin); fgets(salario_substituto, 40, stdin);
        strcpy(atual->salarioconvertido,salario_substituto);
        atual->salario=atoi(atual->salarioconvertido);
        printf("\n  Novo cpf: ");
        fflush (stdin); fgets(cpf_substituto, 40, stdin);
        strcpy(atual->cpfconvertido,cpf_substituto);
        atual->cpf=atoi(atual->cpfconvertido);
        printf("  Dados alterados com sucesso.");
     }else{
        printf("\n  Candidato não encontrado.");
     }
     printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}

void pesquisar (Lista* primeiro){
    setlocale(LC_ALL, "Portuguese");
    char opcao;
    int codigopesquisa;
    int salariopesquisa;
    int tempopesquisa;
    char nomepesquisa[40];
    char formacaopesquisa[40];
    char cargopesquisa[40];
    char idioma1pesquisa[40];
      printf("   |-----------------------------------| \n");
      printf("   | <A>  Nome                         |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <B>  Código                       |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <C>  Formação                     |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <D>  Cargo                        |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <E>  Língua Estrangeira           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <F>  Salário Pretendido           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <G>  Tempo de Experiência         |\n");
      printf("   |-----------------------------------|\n");
      printf("\n\n\n\n");

      //Lendo a opcao do menu
      fflush(stdin);
      opcao= getch();

      //Menu de opções
      switch(opcao)
      {
         case 'A':
         case 'a':
              //Pesquisando por nome.
              system ("cls");
              Lista* atualnome;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Nome a ser pesquisado: ");
              fflush (stdin); fgets(nomepesquisa, 40, stdin);
              for(atualnome= primeiro ; atualnome!= NULL; atualnome= atualnome->prox){
                if(strcmp(atualnome->nome, nomepesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualnome->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualnome->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualnome->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualnome->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualnome->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualnome->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualnome->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualnome->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualnome->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualnome->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualnome->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualnome->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualnome->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'B':
         case 'b':
              //Pesquisando por código.
              system ("cls");
              Lista* atualcodigo;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Código a ser pesquisado: ");
              scanf("%d", &codigopesquisa);
              for(atualcodigo= primeiro ; atualcodigo!= NULL; atualcodigo= atualcodigo->prox){
                if(atualcodigo->codigo==codigopesquisa){
                    printf("\n  Nome: ");
                    printf("%s", atualcodigo->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualcodigo->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualcodigo->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualcodigo->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualcodigo->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualcodigo->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualcodigo->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualcodigo->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualcodigo->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualcodigo->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualcodigo->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualcodigo->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualcodigo->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'C':
         case 'c':
              //Pesquisando por formação.
              system ("cls");
              Lista* atualformacao;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Formação a ser pesquisada: ");
              fflush (stdin); fgets(formacaopesquisa, 40, stdin);
              for(atualformacao= primeiro ; atualformacao!= NULL; atualformacao= atualformacao->prox){
                if(strcmp(atualformacao->formacao, formacaopesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualformacao->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualformacao->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualformacao->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualformacao->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualformacao->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualformacao->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualformacao->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualformacao->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualformacao->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualformacao->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualformacao->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualformacao->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualformacao->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'D':
         case 'd':
              //Pesquisando por cargo.
              system ("cls");
              Lista* atualcargo;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Cargo a ser pesquisado: ");
              fflush (stdin); fgets(cargopesquisa, 40, stdin);
              for(atualcargo= primeiro ; atualcargo!= NULL; atualcargo= atualcargo->prox){
                if(strcmp(atualcargo->cargo, cargopesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualcargo->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualcargo->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualcargo->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualcargo->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualcargo->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualcargo->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualcargo->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualcargo->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualcargo->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualcargo->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualcargo->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualcargo->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualcargo->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'E':
         case 'e':
              //Pesquisando por língua estrangeira.
              system ("cls");
              Lista* atualidioma1;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Língua estrangeira a ser pesquisada: ");
              fflush (stdin); fgets(idioma1pesquisa, 40, stdin);
              for(atualidioma1= primeiro ; atualidioma1!= NULL; atualidioma1= atualidioma1->prox){
                if(strcmp(atualidioma1->idioma1, idioma1pesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualidioma1->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualidioma1->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualidioma1->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualidioma1->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualidioma1->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualidioma1->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualidioma1->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualidioma1->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualidioma1->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualidioma1->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualidioma1->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualidioma1->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualidioma1->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'F':
         case 'f':
              //Pesquisando por salário.
              system ("cls");
              Lista* atualsalario;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Salário máximo a ser pesquisado: ");
              scanf("%d", &salariopesquisa);
              for(atualsalario= primeiro ; atualsalario!= NULL; atualsalario= atualsalario->prox){
                if(atualsalario->salario<=salariopesquisa){
                    printf("\n  Nome: ");
                    printf("%s", atualsalario->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualsalario->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualsalario->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualsalario->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualsalario->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualsalario->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualsalario->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualsalario->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualsalario->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualsalario->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualsalario->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualsalario->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualsalario->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'G':
         case 'g':
              //Pesquisando por tempo de experiência.
              system ("cls");
              Lista* atualtempo;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Tempo mínimo de experiência a ser pesquisado: ");
              scanf("%d", &tempopesquisa);
              for(atualtempo= primeiro ; atualtempo!= NULL; atualtempo= atualtempo->prox){
                if(atualtempo->tempo>=tempopesquisa){
                    printf("\n  Nome: ");
                    printf("%s", atualtempo->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualtempo->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualtempo->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualtempo->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualtempo->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualtempo->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualtempo->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualtempo->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualtempo->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualtempo->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualtempo->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualtempo->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualtempo->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         default:
              //Artifício que previne a situação de um usuário qualquer, digitar uma opcão inexistente no menu.
              system("cls");
         break;
      }
   }

void escrever(Lista* primeiro){
    Lista *atual;
    FILE *f;
    f = fopen("dados.txt", "w");
    for(atual= primeiro ; atual!= NULL; atual= atual->prox){
    fprintf(f, "%s|%s|%s|%s|%d|", atual->nome, atual->rua, atual->bairro, atual->email, atual->telefone);
    fprintf(f, "%s|%s|%s|%s|%d|", atual->formacao, atual->local, atual->cargo, atual->idioma1, atual->tempo);
    fprintf(f, "%f|%d|%d|\n", atual->salario, atual->cpf, atual->codigo);
    }
    fclose(f);
}

void carregar(Lista *primeiro, Lista *aux, Lista *point){
    FILE *f;
    primeiro = malloc(sizeof(Lista));
    aux = primeiro;
    aux->prox = 0;
    aux->ant = 0;
    point = aux;
    f = fopen("dados.txt", "r+");
    rewind(f);
    point = malloc(sizeof(Lista));
    point->prox = 0;
    point->ant = aux;
    aux->prox = point;
    while(fscanf(f, "%s\n|%s\n|%s\n|%s\n|%d", &point->nome, &point->rua, &point->bairro, &point->email, &point->telefone)!=EOF){
      fscanf(f, "|%s\n|%s\n|%s\n|%s\n|%d", &point->formacao ,&point->local, &point->cargo, &point->idioma1, &point->tempo);
      fscanf(f, "|%f|%d|%d\n", &point->salario, &point->cpf, &point->codigo);
      aux = point;
      printf("assasa");
      printf("%f", point->salario);
      printf("%d", point->codigo);
      printf("%s", &point->nome);
      point = malloc(sizeof(Lista));
      point->prox = 0;
      point->ant = aux;
      aux->prox = point;
    }
    aux->prox = 0;
    free(point);
    fclose(f);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em fscanf, na função carregar(), você tem que usar do mesmo jeito que usou para salvar com fprintf,  como a seguinte linha:

"%s\n|%s\n|%s\n|%s\n|%d" deveria ser:

"%s|%s|%s|%s|%d", ja que os dados estão na mesma linha, se você colocar \n ele ira ler a próxima linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, consertei aqui e realmente ajudou. Deu pra notar que o programa tá lendo tudo agora. Mas, tipo, nas outras funções do programa (listar, excluir e procurar), os dados não aparecem. Tem alguma ideia do porquê?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes temos que saber se ele foi inserido, ja que é ai que recebemos dados, segue o codigo:

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

 typedef struct lista{
     char nome[40];
     char rua[40];
     char bairro[40];
     char email[40];
     int telefone;
     char telefoneconvertido[40];
     char formacao[40];
     char local[40];
     char cargo[40];
     char idioma1[40];
     int tempo;
     char tempoconvertido[40];
     float salario;
     char salarioconvertido[40];
     int cpf;
     char cpfconvertido[40];
     unsigned long int codigo;
     struct lista* ant;
     struct lista* prox;
   }Lista;

   //Declaração de funções.
   Lista* inserir(Lista* primeiro);
   void listar(Lista* primeiro, Lista* point);
   Lista* excluir(Lista* primeiro);
   void alterar(Lista* primeiro);
   void pesquisar(Lista* primeiro);
   Lista *carregar(Lista* primeiro, Lista* aux, Lista* point);
   void escrever(Lista* primeiro);

main()
{
   setlocale(LC_ALL, "Portuguese");
   //Declaração de variáveis
   Lista *primeiro= NULL;
   Lista *atual;
   Lista* aux;
   Lista* point;
   char opcao;
   primeiro = carregar(primeiro, aux, point);

   //Artifício para repetir o programa.
   while(opcao!='s')
   {
     //Menu de opções
      printf(" ----------------------------------------------------------------------------\n");
      printf(" | ");printf("\t\t\t     RECRUTAMENTO ONLINE");printf("\t\t\t    |\n");
      printf(" ----------------------------------------------------------------------------\n");
      printf("   |-----------------------------------|\n");
      printf("   | <A>  Novo cadastro                |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <B>  Listar                       |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <C>  Excluir cadastro             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <D>  Alterar cadastro             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <E>  Pesquisar cadastro           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <F>  Sobre o programa             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <S>  Sair                         |\n");
      printf("   |-----------------------------------|");
      printf("\n\n\n\n");

      //Lendo a opcao do menu
      fflush(stdin);
      opcao= getch();

      //Menu de opções
      switch(opcao)
      {
         case 'A':
         case 'a':
              //Inserindo as pessoas.
              fflush(stdin);
              system("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t          NOVO CADASTRO     ");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              primeiro= inserir(primeiro);
         getch();
         system("cls");
         break;

         case 'B':
         case 'b':
              //Listando as pessoas.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t     PESSOAS CADASTRADAS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              listar(primeiro, point);
         getch();
         system("cls");
         break;

         case 'C':
         case 'c':
              //Excluindo pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t        EXCLUIR CADASTROS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              primeiro= excluir(primeiro);
         getch();
         system("cls");
         break;

         case 'D':
         case 'd':
              //Alterando pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       ALTERAR CADASTRADOS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              alterar(primeiro);
         getch();
         system("cls");
         break;

         case 'E':
         case 'e':
              //Pesquisando pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       PESQUISAR CADASTRADOS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              pesquisar(primeiro);
         getch();
         system("cls");
         break;

         case 'F':
         case 'f':
              //Fala um pouco sobre como funciona o programa.
              system ("cls");
              printf(" -----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       SOBRE O PROGRAMA");printf("\t\t\t             |\n");
              printf(" -----------------------------------------------------------------------------\n");
              printf(" |O programa foi criado com o conceito de que candidatos a determinadas vagas|\n");
              printf(" |                                                                           |\n");
              printf(" |de emprego poderiam ser cadastrados, adicionando dados relevantes para o   |\n");
              printf(" |                                                                           |\n");
              printf(" |empregador. O programa é destinado para o empregador que queira organizar  |\n");
              printf(" |                                                                           |\n");
              printf(" |os candidatos e tornar mais fácil o recrutamento. O programa conta com     |\n");
              printf(" |                                                                           |\n");
              printf(" |5 funcionalidades principais: cadastro, listagem de candidatos, alteração  |\n");
              printf(" |                                                                           |\n");
              printf(" |de dados, exclusão de cadastro e pesquisa de candidatos.                   |\n");
              printf(" -----------------------------------------------------------------------------\n");
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
              getch();
              system("cls");
         break;

         case 'S':
         case 's':
              //Artifício para sair do programa.
              escrever(primeiro);
              opcao='s';
         break;

         default:
              //Artifício que previne a situação de um usuário qualquer, digitar uma opcão inexistente no menu.
              system("cls");
         break;
      }
   }
}

Lista* inserir (Lista *primeiro){
     setlocale(LC_ALL, "Portuguese");
     Lista pessoa;
     Lista *atual= primeiro;
     char identificador= 'F';

     //Lendo as informações do candidato.
     printf("  Nome: ");
     fflush (stdin); fgets(pessoa.nome, 40, stdin); printf ("\n");
     printf("  Rua: ");
     fflush (stdin); fgets(pessoa.rua, 40, stdin); printf ("\n");
     printf("  Bairro: ");
     fflush (stdin); fgets(pessoa.bairro, 40, stdin); printf ("\n");
     printf("  E-mail: ");
     fflush (stdin); fgets(pessoa.email, 40, stdin); printf ("\n");
     printf("  Telefone: ");
     scanf("%d",&pessoa.telefone);printf ("\n");
     printf("  Formação: ");
     fflush (stdin); fgets(pessoa.formacao, 40, stdin); printf ("\n");
     printf("  Local de Formação: ");
     fflush (stdin); fgets(pessoa.local, 40, stdin); printf ("\n");
     printf("  Cargo Pretendido: ");
     fflush (stdin); fgets(pessoa.cargo, 40, stdin); printf ("\n");
     printf("  Língua Estrangeira: ");
     fflush (stdin); fgets(pessoa.idioma1, 40, stdin); printf ("\n");
     printf("  Tempo de experiência no cargo(em anos): ");
     scanf("%d",&pessoa.tempo);printf ("\n");
     printf("  Pretensão salarial: ");
     scanf("%f",&pessoa.salario);printf ("\n");
     printf("  CPF: ");
     scanf("%d",&pessoa.cpf, 9);printf ("\n");
     printf("  Código: ");
     scanf("%u",&pessoa.codigo);printf ("\n");

     //Verificando se o cadastro já existe.
     for(atual=primeiro; atual!=NULL; atual=atual->prox){
        if(atual->codigo==pessoa.codigo){
            identificador= 'V';
            break;
        }
     }

     if(identificador!='V' && (strlen(pessoa.nome)!=1 && strlen(pessoa.rua)!=1)){
         //Alocando os espaços e guardando as informações do candidato.
         Lista* NovoCandidato=(Lista*) malloc (sizeof(Lista));
         strcpy(NovoCandidato->nome, pessoa.nome);
         strcpy(NovoCandidato->rua, pessoa.rua);
         strcpy(NovoCandidato->bairro, pessoa.bairro);
         strcpy(NovoCandidato->email, pessoa.email);
         NovoCandidato->telefone= pessoa.telefone;
         strcpy(NovoCandidato->formacao, pessoa.formacao);
         strcpy(NovoCandidato->cargo, pessoa.cargo);
         strcpy(NovoCandidato->local, pessoa.local);
         strcpy(NovoCandidato->idioma1, pessoa.idioma1);
         NovoCandidato->tempo= pessoa.tempo;
         NovoCandidato->salario= pessoa.salario;
         NovoCandidato->cpf= pessoa.cpf;
         NovoCandidato->codigo= pessoa.codigo;
         NovoCandidato->prox= primeiro;
         printf("  Cadastro realizado com sucesso.");
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return NovoCandidato;
     }else{
         printf("  Cadastro inválido.");
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return primeiro;
     }
}

void listar (Lista* primeiro, Lista* point){
     setlocale(LC_ALL, "Portuguese");
     Lista* atual;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.

     //Imprimindo os candidatos da lista, e suas repectivas informações.
     for(atual= primeiro ; atual!= NULL; atual= atual->prox){
        printf("\n  Nome: ");
        printf("%s", atual->nome);
        printf("\n  Rua: ");
        printf("%s", atual->rua);
        printf("\n  Bairro: ");
        printf("%s", atual->bairro);
        printf("\n  E-mail: ");
        printf("%s", atual->email);
        printf("\n  Telefone: ");
        printf("%d", atual->telefone);
        printf("\n\n  Formação: ");
        printf("%s", atual->formacao);
        printf("\n  Local de Formação: ");
        printf("%s", atual->local);
        printf("\n  Cargo Pretendido: ");
        printf("%s", atual->cargo);
        printf("\n  Língua Estrangeira: ");
        printf("%s", atual->idioma1);
        printf("\n  Tempo de experiência no cargo(em anos): ");
        printf("%d", atual->tempo);
        printf("\n\n  Pretensão Salarial: ");
        printf("%.2f", atual->salario);
        printf("\n\n  CPF: ");
        printf("%d", atual->cpf);
        printf("\n\n  Código: ");
        printf("%u", atual->codigo);
        printf("\n\n");
     }
     if(primeiro==NULL)
        printf("  Nenhum candidato cadastrado.");
     printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}

Lista* excluir(Lista *primeiro){

     Lista *anterior= NULL;//Ponteiro para saber o elemento anterior ao elemento atual da lista.
     Lista *atual= primeiro;//Ponteiro para percorrer a lista sem perder o primeiro elemento da lista.
     unsigned long int codigo=0;

     //Requisitando e lendo o código do candidato a ser excluído.
     printf("  Código do candidato a ser excluído: ");
     fflush(stdin);
     scanf("%u",&codigo);

     //Procurando o candidato na lista.
     while(atual!= NULL && atual->codigo!=codigo){
        anterior= atual;
        atual= atual->prox;
     }

     //Mensagem caso o candidato não seja encontrado.
     if(atual==NULL){
        printf("\n  Candidato não encontrado.");
        printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
        return primeiro;
     }

     //Excluindo o primeiro candidato da lista.
     if(anterior==NULL){
        printf("\n  Conteúdo excluído com sucesso.");
        primeiro= atual->prox;
     //Excluindo um candidato do meio da lista.
     }else{
        printf("\n  Conteúdo excluído com sucesso.");
        anterior->prox= atual->prox;
     }

     //Desalocando o espaço da memória.
     free(atual);
     printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
     return primeiro;
}

//Função para alterar candidato.
void alterar(Lista* primeiro){
     char nome_substituto[40], rua_substituto[40], bairro_substituto[40], email_substituto[40], formacao_substituto[40], local_substituto[40], cargo_substituto[40], idioma1_substituto[40];
     char telefone_substituto[40], tempo_substituto[40], cpf_substituto[40];
     char salario_substituto[40];
     unsigned long int codigo;
     Lista* atual=primeiro;

     //Requisitando e lendo o código do candidato a ser alterado.
     printf("  Código do candidato a ser alterado: ");
     fflush(stdin);
     scanf("%u",&codigo);

     //Procurando o candidato na lista.
     while(atual!= NULL && atual->codigo!=codigo){
        atual= atual->prox;
     }

     //Alterando os dados do candidato.
     if(atual!=NULL){
        sprintf(atual->telefoneconvertido, "%i", atual->telefone);
        sprintf(atual->tempoconvertido, "%i", atual->tempo);
        sprintf(atual->cpfconvertido, "%i", atual->cpf);
        sprintf(atual->salarioconvertido, "%f", atual->salario);
        printf("\n  Novo nome: ");
        fflush (stdin); fgets(nome_substituto, 40, stdin);
        strcpy(atual->nome,nome_substituto);
        printf("\n  Nova rua: ");
        fflush (stdin); fgets(rua_substituto, 40, stdin);
        strcpy(atual->rua,rua_substituto);
        printf("\n  Novo bairro: ");
        fflush (stdin); fgets(bairro_substituto, 40, stdin);
        strcpy(atual->bairro,bairro_substituto);
        printf("\n  Novo e-mail: ");
        fflush (stdin); fgets(email_substituto, 40, stdin);
        strcpy(atual->email,email_substituto);
        printf("\n  Novo telefone: ");
        fflush (stdin); fgets(telefone_substituto, 40, stdin);
        strcpy(atual->telefoneconvertido,telefone_substituto);
        atual->telefone=atoi(atual->telefoneconvertido);
        printf("\n  Nova formação: ");
        fflush (stdin); fgets(formacao_substituto, 40, stdin);
        strcpy(atual->formacao,formacao_substituto);
        printf("\n  Novo local: ");
        fflush (stdin); fgets(local_substituto, 40, stdin);
        strcpy(atual->local,local_substituto);
        printf("\n  Novo cargo: ");
        fflush (stdin); fgets(cargo_substituto, 40, stdin);
        strcpy(atual->cargo,cargo_substituto);
        printf("\n  Nova Língua Estrangeira: ");
        fflush (stdin); fgets(idioma1_substituto, 40, stdin);
        strcpy(atual->idioma1,idioma1_substituto);
        printf("\n  Novo tempo de experiência no cargo: ");
        fflush (stdin); fgets(tempo_substituto, 40, stdin);
        strcpy(atual->tempoconvertido,tempo_substituto);
        atual->tempo=atoi(atual->tempoconvertido);
        printf("\n  Nova pretensão salarial: ");
        fflush (stdin); fgets(salario_substituto, 40, stdin);
        strcpy(atual->salarioconvertido,salario_substituto);
        atual->salario=atoi(atual->salarioconvertido);
        printf("\n  Novo cpf: ");
        fflush (stdin); fgets(cpf_substituto, 40, stdin);
        strcpy(atual->cpfconvertido,cpf_substituto);
        atual->cpf=atoi(atual->cpfconvertido);
        printf("  Dados alterados com sucesso.");
     }else{
        printf("\n  Candidato não encontrado.");
     }
     printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}

void pesquisar (Lista* primeiro){
    setlocale(LC_ALL, "Portuguese");
    char opcao;
    int codigopesquisa;
    int salariopesquisa;
    int tempopesquisa;
    char nomepesquisa[40];
    char formacaopesquisa[40];
    char cargopesquisa[40];
    char idioma1pesquisa[40];
      printf("   |-----------------------------------| \n");
      printf("   | <A>  Nome                         |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <B>  Código                       |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <C>  Formação                     |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <D>  Cargo                        |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <E>  Língua Estrangeira           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <F>  Salário Pretendido           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <G>  Tempo de Experiência         |\n");
      printf("   |-----------------------------------|\n");
      printf("\n\n\n\n");

      //Lendo a opcao do menu
      fflush(stdin);
      opcao= getch();

      //Menu de opções
      switch(opcao)
      {
         case 'A':
         case 'a':
              //Pesquisando por nome.
              system ("cls");
              Lista* atualnome;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Nome a ser pesquisado: ");
              fflush (stdin); fgets(nomepesquisa, 40, stdin);
              for(atualnome= primeiro ; atualnome!= NULL; atualnome= atualnome->prox){
                if(strcmp(atualnome->nome, nomepesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualnome->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualnome->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualnome->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualnome->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualnome->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualnome->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualnome->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualnome->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualnome->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualnome->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualnome->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualnome->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualnome->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'B':
         case 'b':
              //Pesquisando por código.
              system ("cls");
              Lista* atualcodigo;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Código a ser pesquisado: ");
              scanf("%d", &codigopesquisa);
              for(atualcodigo= primeiro ; atualcodigo!= NULL; atualcodigo= atualcodigo->prox){
                if(atualcodigo->codigo==codigopesquisa){
                    printf("\n  Nome: ");
                    printf("%s", atualcodigo->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualcodigo->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualcodigo->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualcodigo->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualcodigo->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualcodigo->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualcodigo->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualcodigo->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualcodigo->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualcodigo->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualcodigo->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualcodigo->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualcodigo->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'C':
         case 'c':
              //Pesquisando por formação.
              system ("cls");
              Lista* atualformacao;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Formação a ser pesquisada: ");
              fflush (stdin); fgets(formacaopesquisa, 40, stdin);
              for(atualformacao= primeiro ; atualformacao!= NULL; atualformacao= atualformacao->prox){
                if(strcmp(atualformacao->formacao, formacaopesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualformacao->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualformacao->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualformacao->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualformacao->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualformacao->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualformacao->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualformacao->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualformacao->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualformacao->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualformacao->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualformacao->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualformacao->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualformacao->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'D':
         case 'd':
              //Pesquisando por cargo.
              system ("cls");
              Lista* atualcargo;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Cargo a ser pesquisado: ");
              fflush (stdin); fgets(cargopesquisa, 40, stdin);
              for(atualcargo= primeiro ; atualcargo!= NULL; atualcargo= atualcargo->prox){
                if(strcmp(atualcargo->cargo, cargopesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualcargo->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualcargo->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualcargo->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualcargo->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualcargo->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualcargo->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualcargo->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualcargo->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualcargo->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualcargo->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualcargo->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualcargo->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualcargo->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'E':
         case 'e':
              //Pesquisando por língua estrangeira.
              system ("cls");
              Lista* atualidioma1;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Língua estrangeira a ser pesquisada: ");
              fflush (stdin); fgets(idioma1pesquisa, 40, stdin);
              for(atualidioma1= primeiro ; atualidioma1!= NULL; atualidioma1= atualidioma1->prox){
                if(strcmp(atualidioma1->idioma1, idioma1pesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualidioma1->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualidioma1->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualidioma1->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualidioma1->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualidioma1->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualidioma1->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualidioma1->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualidioma1->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualidioma1->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualidioma1->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualidioma1->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualidioma1->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualidioma1->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'F':
         case 'f':
              //Pesquisando por salário.
              system ("cls");
              Lista* atualsalario;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Salário máximo a ser pesquisado: ");
              scanf("%d", &salariopesquisa);
              for(atualsalario= primeiro ; atualsalario!= NULL; atualsalario= atualsalario->prox){
                if(atualsalario->salario<=salariopesquisa){
                    printf("\n  Nome: ");
                    printf("%s", atualsalario->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualsalario->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualsalario->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualsalario->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualsalario->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualsalario->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualsalario->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualsalario->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualsalario->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualsalario->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualsalario->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualsalario->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualsalario->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         case 'G':
         case 'g':
              //Pesquisando por tempo de experiência.
              system ("cls");
              Lista* atualtempo;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Tempo mínimo de experiência a ser pesquisado: ");
              scanf("%d", &tempopesquisa);
              for(atualtempo= primeiro ; atualtempo!= NULL; atualtempo= atualtempo->prox){
                if(atualtempo->tempo>=tempopesquisa){
                    printf("\n  Nome: ");
                    printf("%s", atualtempo->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualtempo->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualtempo->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualtempo->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualtempo->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualtempo->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualtempo->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualtempo->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualtempo->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualtempo->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualtempo->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualtempo->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualtempo->codigo);
                    printf("\n\n");
                }
              }
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         break;

         default:
              //Artifício que previne a situação de um usuário qualquer, digitar uma opcão inexistente no menu.
              system("cls");
         break;
      }
   }

void escrever(Lista* primeiro){
    Lista *atual;
    FILE *f;
    f = fopen("dados.txt", "w");
    for(atual= primeiro ; atual!= NULL; atual= atual->prox){
   	 fprintf(f, "%s %s %s %s %d\n", atual->nome, atual->rua, atual->bairro, atual->email, atual->telefone);
   	 fprintf(f, "%s %s %s %s %d\n", atual->formacao, atual->local, atual->cargo, atual->idioma1, atual->tempo);
   	 fprintf(f, "%f %d %d\n", atual->salario, atual->cpf, atual->codigo);
    }
    fclose(f);
}

Lista *carregar(Lista *primeiro, Lista *aux, Lista *point){
    FILE *f;
    
    primeiro = (Lista *)malloc(sizeof(Lista));
    
    f = fopen("dados.txt", "r+");
    
    point = primeiro;
    while(!feof(f)){
    	
    	  fscanf(f, "%s %s %s %s %d", point->nome, point->rua, point->bairro, point->email, &point->telefone);
     	  fscanf(f, "%s %s %s %s %d", point->formacao ,point->local, point->cargo, point->idioma1, &point->tempo);
      	  fscanf(f, "%f %d %d\n", &point->salario, &point->cpf, &point->codigo);
      
    	  aux = point;
          point = (Lista *)malloc(sizeof(Lista));
          aux->prox = (Lista *)malloc(sizeof(Lista));
          point = aux->prox;
    }
    aux->prox = 0;
    fclose(f);
    return primeiro;
}

Não precisa se preocupar se a estrutura do arquivo parecer estar errada, pois  quando é carregado ele auto-corrige, se você quiser usar o separador | para os dados no arquivo você tem que criar um interpretador, obter a string do arquivo e armazenar os dados corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa, dessa vez deu certo. Nem sei como te agradecer. Obrigado mesmo.

 

O único problema agora é esse bug, que é inclusive salvo no TXT:

Spoiler

photo725812111559731388.jpg

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse bug acontece quando há um problema na leitura do arquivo, faça o seguinte, apaga o arquivo que você possui, abra o programa e insira os clientes, e saia do programa, mas quando fizer não modifique o arquivo, depois abra o programa e veja se funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pronto, agora ficou perfeito. Está lendo, cadastrando, alterando e excluindo perfeitamente. Mas, por algum motivo, na função pesquisar, o programa não está pesquisando as strings (nome, língua estrangeira, etc). Só pesquisa os inteiros (código, tempo de experiência e salário).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Correção comentada nos cases da função pesquisar, abaixo dos fgets, segue:

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

 typedef struct lista{
     char nome[40];
     char rua[40];
     char bairro[40];
     char email[40];
     int telefone;
     char telefoneconvertido[40];
     char formacao[40];
     char local[40];
     char cargo[40];
     char idioma1[40];
     int tempo;
     char tempoconvertido[40];
     float salario;
     char salarioconvertido[40];
     int cpf;
     char cpfconvertido[40];
     unsigned long int codigo;
     struct lista* ant;
     struct lista* prox;
   }Lista;

   //Declaração de funções.
   Lista* inserir(Lista* primeiro);
   void listar(Lista* primeiro, Lista* point);
   Lista* excluir(Lista* primeiro);
   void alterar(Lista* primeiro);
   void pesquisar(Lista* primeiro);
   Lista *carregar(Lista* primeiro, Lista* aux, Lista* point);
   void escrever(Lista* primeiro);

main()
{
   setlocale(LC_ALL, "Portuguese");
   //Declaração de variáveis
   Lista *primeiro= NULL;
   Lista *atual;
   Lista* aux;
   Lista* point;
   char opcao;
   primeiro = carregar(primeiro, aux, point);

   //Artifício para repetir o programa.
   while(opcao!='s')
   {
     //Menu de opções
      printf(" ----------------------------------------------------------------------------\n");
      printf(" | ");printf("\t\t\t     RECRUTAMENTO ONLINE");printf("\t\t\t    |\n");
      printf(" ----------------------------------------------------------------------------\n");
      printf("   |-----------------------------------|\n");
      printf("   | <A>  Novo cadastro                |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <B>  Listar                       |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <C>  Excluir cadastro             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <D>  Alterar cadastro             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <E>  Pesquisar cadastro           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <F>  Sobre o programa             |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <S>  Sair                         |\n");
      printf("   |-----------------------------------|");
      printf("\n\n\n\n");

      //Lendo a opcao do menu
      fflush(stdin);
      opcao= getch();

      //Menu de opções
      switch(opcao)
      {
         case 'A':
         case 'a':
              //Inserindo as pessoas.
              fflush(stdin);
              system("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t          NOVO CADASTRO     ");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              primeiro= inserir(primeiro);
         getch();
         system("cls");
         break;

         case 'B':
         case 'b':
              //Listando as pessoas.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t     PESSOAS CADASTRADAS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              listar(primeiro, point);
         getch();
         system("cls");
         break;

         case 'C':
         case 'c':
              //Excluindo pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t        EXCLUIR CADASTROS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              primeiro= excluir(primeiro);
         getch();
         system("cls");
         break;

         case 'D':
         case 'd':
              //Alterando pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       ALTERAR CADASTRADOS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              alterar(primeiro);
         getch();
         system("cls");
         break;

         case 'E':
         case 'e':
              //Pesquisando pessoas da lista.
              system ("cls");
              printf(" ----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       PESQUISAR CADASTRADOS");printf("\t\t\t    |\n");
              printf(" ----------------------------------------------------------------------------\n");
              pesquisar(primeiro);
         getch();
         system("cls");
         break;

         case 'F':
         case 'f':
              //Fala um pouco sobre como funciona o programa.
              system ("cls");
              printf(" -----------------------------------------------------------------------------\n");
              printf(" | ");printf("\t\t\t       SOBRE O PROGRAMA");printf("\t\t\t             |\n");
              printf(" -----------------------------------------------------------------------------\n");
              printf(" |O programa foi criado com o conceito de que candidatos a determinadas vagas|\n");
              printf(" |                                                                           |\n");
              printf(" |de emprego poderiam ser cadastrados, adicionando dados relevantes para o   |\n");
              printf(" |                                                                           |\n");
              printf(" |empregador. O programa é destinado para o empregador que queira organizar  |\n");
              printf(" |                                                                           |\n");
              printf(" |os candidatos e tornar mais fácil o recrutamento. O programa conta com     |\n");
              printf(" |                                                                           |\n");
              printf(" |5 funcionalidades principais: cadastro, listagem de candidatos, alteração  |\n");
              printf(" |                                                                           |\n");
              printf(" |de dados, exclusão de cadastro e pesquisa de candidatos.                   |\n");
              printf(" -----------------------------------------------------------------------------\n");
              printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
              getch();
              system("cls");
         break;

         case 'S':
         case 's':
              //Artifício para sair do programa.
              escrever(primeiro);
              opcao='s';
         break;

         default:
              //Artifício que previne a situação de um usuário qualquer, digitar uma opcão inexistente no menu.
              system("cls");
         break;
      }
   }
}

Lista* inserir (Lista *primeiro){
     setlocale(LC_ALL, "Portuguese");
     Lista pessoa;
     Lista *atual= primeiro;
     char identificador= 'F';

     //Lendo as informações do candidato.
     printf("  Nome: ");
     fflush (stdin); fgets(pessoa.nome, 40, stdin); printf ("\n");
     printf("  Rua: ");
     fflush (stdin); fgets(pessoa.rua, 40, stdin); printf ("\n");
     printf("  Bairro: ");
     fflush (stdin); fgets(pessoa.bairro, 40, stdin); printf ("\n");
     printf("  E-mail: ");
     fflush (stdin); fgets(pessoa.email, 40, stdin); printf ("\n");
     printf("  Telefone: ");
     scanf("%d",&pessoa.telefone);printf ("\n");
     printf("  Formação: ");
     fflush (stdin); fgets(pessoa.formacao, 40, stdin); printf ("\n");
     printf("  Local de Formação: ");
     fflush (stdin); fgets(pessoa.local, 40, stdin); printf ("\n");
     printf("  Cargo Pretendido: ");
     fflush (stdin); fgets(pessoa.cargo, 40, stdin); printf ("\n");
     printf("  Língua Estrangeira: ");
     fflush (stdin); fgets(pessoa.idioma1, 40, stdin); printf ("\n");
     printf("  Tempo de experiência no cargo(em anos): ");
     scanf("%d",&pessoa.tempo);printf ("\n");
     printf("  Pretensão salarial: ");
     scanf("%f",&pessoa.salario);printf ("\n");
     printf("  CPF: ");
     scanf("%d",&pessoa.cpf, 9);printf ("\n");
     printf("  Código: ");
     scanf("%u",&pessoa.codigo);printf ("\n");

     //Verificando se o cadastro já existe.
     for(atual=primeiro; atual!=NULL; atual=atual->prox){
        if(atual->codigo==pessoa.codigo){
            identificador= 'V';
            break;
        }
     }

     if(identificador!='V' && (strlen(pessoa.nome)!=1 && strlen(pessoa.rua)!=1)){
         //Alocando os espaços e guardando as informações do candidato.
         Lista* NovoCandidato=(Lista*) malloc (sizeof(Lista));
         strcpy(NovoCandidato->nome, pessoa.nome);
         strcpy(NovoCandidato->rua, pessoa.rua);
         strcpy(NovoCandidato->bairro, pessoa.bairro);
         strcpy(NovoCandidato->email, pessoa.email);
         NovoCandidato->telefone= pessoa.telefone;
         strcpy(NovoCandidato->formacao, pessoa.formacao);
         strcpy(NovoCandidato->cargo, pessoa.cargo);
         strcpy(NovoCandidato->local, pessoa.local);
         strcpy(NovoCandidato->idioma1, pessoa.idioma1);
         NovoCandidato->tempo= pessoa.tempo;
         NovoCandidato->salario= pessoa.salario;
         NovoCandidato->cpf= pessoa.cpf;
         NovoCandidato->codigo= pessoa.codigo;
         NovoCandidato->prox= primeiro;
         printf("  Cadastro realizado com sucesso.");
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return NovoCandidato;
     }else{
         printf("  Cadastro inválido.");
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return primeiro;
     }
}

void listar (Lista* primeiro, Lista* point){
     setlocale(LC_ALL, "Portuguese");
     Lista* atual;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.

     //Imprimindo os candidatos da lista, e suas repectivas informações.
     for(atual= primeiro ; atual!= NULL; atual= atual->prox){
        printf("\n  Nome: ");
        printf("%s", atual->nome);
        printf("\n  Rua: ");
        printf("%s", atual->rua);
        printf("\n  Bairro: ");
        printf("%s", atual->bairro);
        printf("\n  E-mail: ");
        printf("%s", atual->email);
        printf("\n  Telefone: ");
        printf("%d", atual->telefone);
        printf("\n\n  Formação: ");
        printf("%s", atual->formacao);
        printf("\n  Local de Formação: ");
        printf("%s", atual->local);
        printf("\n  Cargo Pretendido: ");
        printf("%s", atual->cargo);
        printf("\n  Língua Estrangeira: ");
        printf("%s", atual->idioma1);
        printf("\n  Tempo de experiência no cargo(em anos): ");
        printf("%d", atual->tempo);
        printf("\n\n  Pretensão Salarial: ");
        printf("%.2f", atual->salario);
        printf("\n\n  CPF: ");
        printf("%d", atual->cpf);
        printf("\n\n  Código: ");
        printf("%u", atual->codigo);
        printf("\n\n");
     }
     if(primeiro==NULL)
        printf("  Nenhum candidato cadastrado.");
     printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}

Lista* excluir(Lista *primeiro){

     Lista *anterior= NULL;//Ponteiro para saber o elemento anterior ao elemento atual da lista.
     Lista *atual= primeiro;//Ponteiro para percorrer a lista sem perder o primeiro elemento da lista.
     unsigned long int codigo=0;

     //Requisitando e lendo o código do candidato a ser excluído.
     printf("  Código do candidato a ser excluído: ");
     fflush(stdin);
     scanf("%u",&codigo);

     //Procurando o candidato na lista.
     while(atual!= NULL && atual->codigo!=codigo){
        anterior= atual;
        atual= atual->prox;
     }

     //Mensagem caso o candidato não seja encontrado.
     if(atual==NULL){
        printf("\n  Candidato não encontrado.");
        printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
        return primeiro;
     }

     //Excluindo o primeiro candidato da lista.
     if(anterior==NULL){
        printf("\n  Conteúdo excluído com sucesso.");
        primeiro= atual->prox;
     //Excluindo um candidato do meio da lista.
     }else{
        printf("\n  Conteúdo excluído com sucesso.");
        anterior->prox= atual->prox;
     }

     //Desalocando o espaço da memória.
     free(atual);
     printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
     return primeiro;
}

//Função para alterar candidato.
void alterar(Lista* primeiro){
     char nome_substituto[40], rua_substituto[40], bairro_substituto[40], email_substituto[40], formacao_substituto[40], local_substituto[40], cargo_substituto[40], idioma1_substituto[40];
     char telefone_substituto[40], tempo_substituto[40], cpf_substituto[40];
     char salario_substituto[40];
     unsigned long int codigo;
     Lista* atual=primeiro;

     //Requisitando e lendo o código do candidato a ser alterado.
     printf("  Código do candidato a ser alterado: ");
     fflush(stdin);
     scanf("%u",&codigo);

     //Procurando o candidato na lista.
     while(atual!= NULL && atual->codigo!=codigo){
        atual= atual->prox;
     }

     //Alterando os dados do candidato.
     if(atual!=NULL){
        sprintf(atual->telefoneconvertido, "%i", atual->telefone);
        sprintf(atual->tempoconvertido, "%i", atual->tempo);
        sprintf(atual->cpfconvertido, "%i", atual->cpf);
        sprintf(atual->salarioconvertido, "%f", atual->salario);
        printf("\n  Novo nome: ");
        fflush (stdin); fgets(nome_substituto, 40, stdin);
        strcpy(atual->nome,nome_substituto);
        printf("\n  Nova rua: ");
        fflush (stdin); fgets(rua_substituto, 40, stdin);
        strcpy(atual->rua,rua_substituto);
        printf("\n  Novo bairro: ");
        fflush (stdin); fgets(bairro_substituto, 40, stdin);
        strcpy(atual->bairro,bairro_substituto);
        printf("\n  Novo e-mail: ");
        fflush (stdin); fgets(email_substituto, 40, stdin);
        strcpy(atual->email,email_substituto);
        printf("\n  Novo telefone: ");
        fflush (stdin); fgets(telefone_substituto, 40, stdin);
        strcpy(atual->telefoneconvertido,telefone_substituto);
        atual->telefone=atoi(atual->telefoneconvertido);
        printf("\n  Nova formação: ");
        fflush (stdin); fgets(formacao_substituto, 40, stdin);
        strcpy(atual->formacao,formacao_substituto);
        printf("\n  Novo local: ");
        fflush (stdin); fgets(local_substituto, 40, stdin);
        strcpy(atual->local,local_substituto);
        printf("\n  Novo cargo: ");
        fflush (stdin); fgets(cargo_substituto, 40, stdin);
        strcpy(atual->cargo,cargo_substituto);
        printf("\n  Nova Língua Estrangeira: ");
        fflush (stdin); fgets(idioma1_substituto, 40, stdin);
        strcpy(atual->idioma1,idioma1_substituto);
        printf("\n  Novo tempo de experiência no cargo: ");
        fflush (stdin); fgets(tempo_substituto, 40, stdin);
        strcpy(atual->tempoconvertido,tempo_substituto);
        atual->tempo=atoi(atual->tempoconvertido);
        printf("\n  Nova pretensão salarial: ");
        fflush (stdin); fgets(salario_substituto, 40, stdin);
        strcpy(atual->salarioconvertido,salario_substituto);
        atual->salario=atoi(atual->salarioconvertido);
        printf("\n  Novo cpf: ");
        fflush (stdin); fgets(cpf_substituto, 40, stdin);
        strcpy(atual->cpfconvertido,cpf_substituto);
        atual->cpf=atoi(atual->cpfconvertido);
        printf("  Dados alterados com sucesso.");
     }else{
        printf("\n  Candidato não encontrado.");
     }
     printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}

void pesquisar (Lista* primeiro){
    setlocale(LC_ALL, "Portuguese");
    char opcao;
    int codigopesquisa;
    int salariopesquisa;
    int tempopesquisa;
    char nomepesquisa[40];
    char formacaopesquisa[40];
    char cargopesquisa[40];
    char idioma1pesquisa[40];
      printf("   |-----------------------------------| \n");
      printf("   | <A>  Nome                         |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <B>  Código                       |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <C>  Formação                     |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <D>  Cargo                        |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <E>  Língua Estrangeira           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <F>  Salário Pretendido           |\n");
      printf("   |-----------------------------------|\n");
      printf("   | <G>  Tempo de Experiência         |\n");
      printf("   |-----------------------------------|\n");
      printf("\n\n\n\n");

      //Lendo a opcao do menu
      fflush(stdin);
      opcao= getch();

      //Menu de opções
      switch(opcao)
      {
         case 'A':
         case 'a':
              //Pesquisando por nome.
              system ("cls");
              Lista* atualnome;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Nome a ser pesquisado: ");
              fflush (stdin); fgets(nomepesquisa, 40, stdin);
              nomepesquisa[strlen(nomepesquisa)-1] = '\0';//Determina fim da string digitada, se não usar, sera informada uma string incorreta e nunca
              											  //Encontraremos um valor no banco de dados
              
              for(atualnome= primeiro ; atualnome!= NULL; atualnome= atualnome->prox){
                if(strcmp(atualnome->nome, nomepesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualnome->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualnome->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualnome->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualnome->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualnome->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualnome->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualnome->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualnome->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualnome->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualnome->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualnome->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualnome->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualnome->codigo);
                    printf("\n\n");
                }
              }
         break;

         case 'B':
         case 'b':
              //Pesquisando por código.
              system ("cls");
              Lista* atualcodigo;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Código a ser pesquisado: ");
              scanf("%d", &codigopesquisa);
              for(atualcodigo= primeiro ; atualcodigo!= NULL; atualcodigo= atualcodigo->prox){
                if(atualcodigo->codigo==codigopesquisa){
                    printf("\n  Nome: ");
                    printf("%s", atualcodigo->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualcodigo->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualcodigo->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualcodigo->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualcodigo->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualcodigo->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualcodigo->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualcodigo->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualcodigo->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualcodigo->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualcodigo->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualcodigo->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualcodigo->codigo);
                    printf("\n\n");
                }
              }
         break;

         case 'C':
         case 'c':
              //Pesquisando por formação.
              system ("cls");
              Lista* atualformacao;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Formação a ser pesquisada: ");
              fflush (stdin); fgets(formacaopesquisa, 40, stdin);
              formacaopesquisa[strlen(formacaopesquisa)-1] = '\0';//Determina fim da string digitada, se não usar, sera informada uma string incorreta e nunca
              											  //Encontraremos um valor no banco de dados
              for(atualformacao= primeiro ; atualformacao!= NULL; atualformacao= atualformacao->prox){
                if(strcmp(atualformacao->formacao, formacaopesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualformacao->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualformacao->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualformacao->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualformacao->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualformacao->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualformacao->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualformacao->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualformacao->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualformacao->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualformacao->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualformacao->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualformacao->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualformacao->codigo);
                    printf("\n\n");
                }
              }
         break;

         case 'D':
         case 'd':
              //Pesquisando por cargo.
              system ("cls");
              Lista* atualcargo;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Cargo a ser pesquisado: ");
              fflush (stdin); fgets(cargopesquisa, 40, stdin);
              cargopesquisa[strlen(cargopesquisa)-1] = '\0';//Determina fim da string digitada, se não usar, sera informada uma string incorreta e nunca
              											  //Encontraremos um valor no banco de dados
              for(atualcargo= primeiro ; atualcargo!= NULL; atualcargo= atualcargo->prox){
                if(strcmp(atualcargo->cargo, cargopesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualcargo->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualcargo->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualcargo->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualcargo->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualcargo->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualcargo->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualcargo->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualcargo->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualcargo->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualcargo->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualcargo->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualcargo->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualcargo->codigo);
                    printf("\n\n");
                }
              }
         break;

         case 'E':
         case 'e':
              //Pesquisando por língua estrangeira.
              system ("cls");
              Lista* atualidioma1;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Língua estrangeira a ser pesquisada: ");
              fflush (stdin); fgets(idioma1pesquisa, 40, stdin);
              idioma1pesquisa[strlen(idioma1pesquisa)-1] = '\0';//Determina fim da string digitada, se não usar, sera informada uma string incorreta e nunca
              											  //Encontraremos um valor no banco de dados
              for(atualidioma1= primeiro ; atualidioma1!= NULL; atualidioma1= atualidioma1->prox){
                if(strcmp(atualidioma1->idioma1, idioma1pesquisa) == 0){
                    printf("\n  Nome: ");
                    printf("%s", atualidioma1->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualidioma1->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualidioma1->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualidioma1->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualidioma1->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualidioma1->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualidioma1->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualidioma1->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualidioma1->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualidioma1->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualidioma1->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualidioma1->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualidioma1->codigo);
                    printf("\n\n");
                }
              }
         break;

         case 'F':
         case 'f':
              //Pesquisando por salário.
              system ("cls");
              Lista* atualsalario;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Salário máximo a ser pesquisado: ");
              scanf("%d", &salariopesquisa);
              
              for(atualsalario= primeiro ; atualsalario!= NULL; atualsalario= atualsalario->prox){
                if(atualsalario->salario<=salariopesquisa){
                    printf("\n  Nome: ");
                    printf("%s", atualsalario->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualsalario->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualsalario->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualsalario->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualsalario->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualsalario->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualsalario->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualsalario->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualsalario->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualsalario->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualsalario->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualsalario->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualsalario->codigo);
                    printf("\n\n");
                }
              }
         break;

         case 'G':
         case 'g':
              //Pesquisando por tempo de experiência.
              system ("cls");
              Lista* atualtempo;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
              printf("\n  Tempo mínimo de experiência a ser pesquisado: ");
              scanf("%d", &tempopesquisa);
              for(atualtempo= primeiro ; atualtempo!= NULL; atualtempo= atualtempo->prox){
                if(atualtempo->tempo>=tempopesquisa){
                    printf("\n  Nome: ");
                    printf("%s", atualtempo->nome);
                    printf("\n  Rua: ");
                    printf("%s", atualtempo->rua);
                    printf("\n  Bairro: ");
                    printf("%s", atualtempo->bairro);
                    printf("\n  E-mail: ");
                    printf("%s", atualtempo->email);
                    printf("\n  Telefone: ");
                    printf("%d", atualtempo->telefone);
                    printf("\n\n  Formação: ");
                    printf("%s", atualtempo->formacao);
                    printf("\n  Local de Formação: ");
                    printf("%s", atualtempo->local);
                    printf("\n  Cargo Pretendido: ");
                    printf("%s", atualtempo->cargo);
                    printf("\n  Língua Estrangeira: ");
                    printf("%s", atualtempo->idioma1);
                    printf("\n  Tempo de experiência no cargo(em anos): ");
                    printf("%d", atualtempo->tempo);
                    printf("\n\n  Pretensão Salarial: ");
                    printf("%.2f", atualtempo->salario);
                    printf("\n\n  CPF: ");
                    printf("%d", atualtempo->cpf);
                    printf("\n\n  Código: ");
                    printf("%u", atualtempo->codigo);
                    printf("\n\n");
                }
              }
         break;

         default:
              //Artifício que previne a situação de um usuário qualquer, digitar uma opcão inexistente no menu.
              system("cls");
         break;
      }
    printf("\n\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}

void escrever(Lista* primeiro){
    Lista *atual;
    FILE *f;
    f = fopen("dados.txt", "w");
    for(atual= primeiro ; atual!= NULL; atual= atual->prox){
   	 fprintf(f, "%s %s %s %s %d\n", atual->nome, atual->rua, atual->bairro, atual->email, atual->telefone);
   	 fprintf(f, "%s %s %s %s %d\n", atual->formacao, atual->local, atual->cargo, atual->idioma1, atual->tempo);
   	 fprintf(f, "%f %d %d\n", atual->salario, atual->cpf, atual->codigo);
    }
    fclose(f);
}

Lista *carregar(Lista *primeiro, Lista *aux, Lista *point){
    FILE *f;
    
    primeiro = (Lista *)malloc(sizeof(Lista));
    
    f = fopen("dados.txt", "r+");
    
    point = primeiro;
    while(!feof(f)){
    	  
    	  fscanf(f, "%s %s %s %s %d", point->nome, point->rua, point->bairro, point->email, &point->telefone);
     	  fscanf(f, "%s %s %s %s %d", point->formacao ,point->local, point->cargo, point->idioma1, &point->tempo);
      	  fscanf(f, "%f %d %d\n", &point->salario, &point->cpf, &point->codigo);
      	  
    	  aux = point;
          point = (Lista *)malloc(sizeof(Lista));
          aux->prox = (Lista *)malloc(sizeof(Lista));
          point = aux->prox;
    }
    aux->prox = 0;
    fclose(f);
    return primeiro;
}

Dica para otimizar seu programa: na struct lista você poderia utilizar ponteiros(como: char *nome em vez de char nome[40]) para as strings, pois assim você so usara a memoria que fosse necessária na hora da alocação de memoria, é só criar uma variável como char buffer[512] e utilizar ela para armazenar as string na função inserir, depois aloca as variaveis da struct lista de acordo com o tamanho da string digitada pelo usuário.

Exemplo:

/* 1FreakDay @2016 */
#include <stdio.h>//printf
#include <string.h>//strlen
#include <stdlib.h>//exit
#include <malloc.h>//malloc

char *alocar_string(int);

int main(){
	char StringA[40];
	char *StringB;
	
	printf("Digite uma string:");
	gets(StringA);
	
	StringB = alocar_string(strlen(StringA));//Aloca string b para uma memoria menor que o indice maximo da String A e usando seu tamanho
	strcpy(StringB, StringA);//Copia a string a para b
	
	printf("Tamanho da string A: %d     %s \n", sizeof(StringA), StringA);
	printf("Tamanho da string B: %d     %s \n",strlen(StringA), StringB);
	
	free(StringB);
	exit(0);
}


char *alocar_string(int tamanho){
	char *str = (char *)malloc(sizeof(char)*tamanho);//str[tamanho]
	
	if(str == NULL){//Nao conseguiu alocar memoria
		printf("Falha ao alocar memoria!\n");
		exit(0);
	}
	return str;//Retorna um ponteiro para memoria alocada
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, ficou perfeito agora. Muito obrigado mesmo. Ajudaste demais. Ah, e adorei a tua dica também. Vou tentar implementar depois. Obrigado mesmo. ;)

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×