Ir ao conteúdo
  • Cadastre-se
Mathaus Brandao

Ajudinha sobre como colocar em ordem alfabética a listagem do código em C

Posts recomendados

Bom,pessoal,ouvi falar muito bem sobre o forum do Clube do Hardware,e como são gentis e tudo mais kkk...Enfim.Gostaria muito que pudessem ajudar-me sobre a questão de como eu poderia inserir no código fonte abaixo,que pudesse fazer a listagem dos nomes salvos em ordem alfabética.A questão abaixo mostra o que deve ser feito:

Desenvolver um programa em linguagem C que manipule arquivo de acordo com as especificações abaixo:

a)      Criação do arquivo caso ele não exista;

B)      Obedecer o seguinte formato de colunas (o separador das colunas será um espaço em branco ou ponto-e-vírgula ;):

                                 i.            Nome Sobrenome telefone e-mail;

                               ii.            Exemplo:

               Edvar Oliveira 3222-2222 [email protected]<script data-cfhash='f9e31' type="text/javascript"> /* */</script>

               Fulano Silva 3221-1111 [email protected]

               João Costa 3245-5678 [email protected]

c)Armazenar as seguintes informações no arquivo:  nome sobrenome telefone e-mail

d)      As informações devem ser inseridas no arquivo de forma organizada (por ordem alfabética), utilizar o campo nome como referencia para organização do arquivo;

e)      Deve permitir consulta, usar campo nome como referencia;

 

bom,grande parte da questão eu já fiz,mas minha dúvida rodeia sobre como eu poderia inserir para que a listagem do meu programa ficasse em ordem alfabética.Ajudem-me kkkk.E desde já agradeço.O código fonte abaixo:

 

#include <stdio.h>#include <string.h>#include <conio.h>#include <stdlib.h>#include <ctype.h> #define arq "dados.dat" #define OP_INSERIR '1'#define OP_LISTAR  '2'#define OP_PESQUISAR  '3' #define OP_SAIR  '0'  #define OP_PESQ_NOME '1' char *MainMenu[]={"1. Inserir no banco de dados","2. Listar no banco de dados","3. Pesquisas no banco de dados","0. Sair",NULL}; char *PesqMenu[]={"1. Pesquisar Por Nome","0. voltar",NULL}; FILE *fp;typedef struct{char Nome[30+1];char Sobrenome[100];int Telefone[100];char Email[100];char status;} PESSOA; void mensagem (char *msg); /*Aqui vai ler os dados inseridos pelo usuario*/void Ler_Pessoa (PESSOA *ptr){printf("Nome:\n");gets (ptr->Nome);printf("\nSobrenome:\n");scanf("%s",&ptr->Sobrenome);printf("\nTelefone:\n");scanf("%d",&ptr->Telefone);printf("\nEmail:\n");scanf("%s",&ptr->Email);    ptr->status=' ';    fflush(stdin);}/*mostra na tela,os dados existentes no registro*/void Mostrar_Pessoa (PESSOA p){printf("%s %s %d %s",p.Nome,p.Sobrenome,p.Telefone,p.Email); }/*aqui o comando vai adicionar a pessoa ao arquivo*/void Adicionar_Pessoa(PESSOA p){fseek(fp,0L,SEEK_END);if(fwrite(&p,sizeof(p),1,fp)!=1)printf("Adicionar Pessoa: Falhou A Escrita Do Registro");} void mensagem (char *msg){printf("Nao adicionado ao banco de dados!!");getchar();}/*Se o Arquivo existir,ele vai ser reposto,senão,criado*/void inic(){fp=fopen(arq,"r+b");if (fp==NULL)    {     fp=fopen(arq,"w+b");     if(fp==NULL)     {fprintf(stderr,"ERRO FATAL: Impossivel Criar Arquivo de Dados"); }}  }  /*O Menu inicial*/  char Menu (char *opções[])  {   int i;   char ch;      while(1)   {   printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");   for (i=0;opções[i]!=NULL;i++)   printf("\t\t\t\n\n%s\n",opções[i]);      printf("\nOpcao: ");   ch=getchar();   fflush(stdin);   for(i=0;opções[i];i++)   if(opções[i][0]==ch)   return ch;       }     }  void Inserir_Pessoa()  { PESSOA p;  Ler_Pessoa (&p);  Adicionar_Pessoa(p);  }/*Listagem de todas as pessoas inseridas no registro*/void Listar (){long int N_Linhas=0;PESSOA reg;rewind(fp);while (1){if(fread(®,sizeof(reg),1,fp)!=1)break;printf("\n");Mostrar_Pessoa(reg);printf("\n");N_Linhas++;if (N_Linhas%2==0); } }/*Pesquisa Individual*/void Pesquisar_Nome(char *s){PESSOA reg;rewind(fp); while(fread(®,sizeof(PESSOA),1,fp))if(reg.status!='*'&&strstr(reg.Nome,s))Mostrar_Pessoa(reg);} main(){ char Opcao;inic();while((Opcao =Menu(MainMenu))!=OP_SAIR)switch(Opcao){case OP_INSERIR: Inserir_Pessoa ();break;case OP_LISTAR: Listar ();break;case OP_PESQUISAR:while((Opcao=Menu(PesqMenu))!=OP_SAIR)switch (Opcao){ case OP_PESQ_NOME:{char string[BUFSIZ+1];printf("Qual o Nome a Procurar:");gets(string);fflush(stdin);Pesquisar_Nome(string);break;}  }  }}

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





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

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!