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

Organização de string em arquivo de ordem alfabética.


luishng

Pergunta

Olá Pessoal,

Gostaria de saber como faço para pegar varias strings que foram escritas e um arquivo, como por exemplo o nome de uma pessoa. E organizar esses nomes em ordem alfabetica 'A até Z' e outra opção de 'Z até A', E mostra na tela.

Linguagem C.

Caso alguém possa me ajudar agradeço ! smile.png

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Leia o arquivo inteiro e guarde em um vetor de strings;

Depois use um algoritmo de ordenação (bubblesort, quicksort, ...)

Para ajudar você poderia usar a função strcmp() do header string.h

int strcmp(char* string1, char* string2)

Ela retorna 1 se string1 for maior que string2

Ela retorna -1 se string2 for maior que string1

Ela retorna 0 se string1 for igual a string2

Lembrando que todo caractere(char) é um inteiro(int) e é na tabela ascii 'a' terá um valor menor que 'z'

Ou seja:

strcmp("a", "b") retorna -1
strcmp("b", "a") retorna 1
strcmp("a", "a") retorna 0
Link para o comentário
Compartilhar em outros sites

  • 0

Finalmente alguém respondeu! Obrigado Dan Oliveira!

O meu problema e exatamente esse, como tirar todas as informações do arquivo e manda-las para um vetor struct com exatamente a quantidade de nomes e fazer com que seja mostrado em ordem alfabética e outra opção para mostrar em ordem inversa a alfabética.

Entendi claramente esse comando, mas o problema e tirar as informações e salva-las .

Aqui esta o código que eu fiz para mostrar todos, mais não está organizado em ordem:

p_arquivo = fopen(NOMEDOARQUIVO,"rb");

system("CLS");
printf("Legenda | Nome Do Candidato | Sigla Do Partido | Eleicao Para Presidente\n-------------------------------------------------------------------------\n");
while(!feof(p_arquivo))
{
fread(&candidato,sizeof(candidato),1,p_arquivo);
if(!feof(p_arquivo))
printf("%d\t\t%s\t\t%s\t\t%s\n", candidato.numerolegenda, candidato.nome, candidato.sigla, candidato.alternativa);
}
fclose(p_arquivo);
Editado por luishng
Link para o comentário
Compartilhar em outros sites

  • 0

Você pode usar a função fgets() para ler uma string do arquivo:

Sua compoisção é:

char *fgets(char *minhaString, int numBytes, FILE *arq)

Onde minhaString é a string que recebe o valor;

int numBytes o numeros de bites a ser lido do arquivo;

FILE *arq - um ponteiro para o arquivo aberto;

Essa função lê uma string até ter lido numBytes caracteres ou encontrado o caractere '\n'

Você pode criar um vetor com 100 nomes de 80 caracteres limites cada

char nomes[100][80];

e depois pode lê o arquivo e coloca em cada indice do vetor

char nome[100][80]
int i = 0;

while(!feof(p_arquivo) || i <100)
         {
                 fgets(nome[i],sizeof(char[80]), p_arquivo);
         }

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...