Ir ao conteúdo
  • Cadastre-se

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


Mathaus Brandao

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;}  }  }}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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...