luishng Postado Junho 29, 2014 Denunciar Share Postado Junho 29, 2014 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 ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Dan Oliveira Postado Julho 1, 2014 Denunciar Share Postado Julho 1, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 luishng Postado Julho 1, 2014 Autor Denunciar Share Postado Julho 1, 2014 (editado) 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 Julho 1, 2014 por luishng Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 luishng Postado Julho 2, 2014 Autor Denunciar Share Postado Julho 2, 2014 Me disseram que para fazer, tenho que colocar todas as informações em vetores, o problema é que eu não estou conseguindo saber como tirar do arquivo e separar cada dado de nome em vetores para fazer o 'Bubble sort'. :s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Dan Oliveira Postado Julho 2, 2014 Denunciar Share Postado Julho 2, 2014 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); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 luishng Postado Julho 3, 2014 Autor Denunciar Share Postado Julho 3, 2014 Caso resolvido! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 amandacongiu Postado Junho 23, 2016 Denunciar Share Postado Junho 23, 2016 Olá, tenho esse mesmo exercício! Como você conseguiu resolver? Poderia me ajudar? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
luishng
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 !
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
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.