Ler um arquivo texto e exiba o conteudo em ordem alfabetica

1. Ler um arquivo texto e exiba o conteudo em ordem alfabetica

amanda
mandinhat

(usa Outra)

Enviado em 19/10/2016 - 00:19h

Ola boa noite!



preciso de um algoritmo que leia um arquivo texto e exiba na tela todos os caracteres do arquivo em ordem alfabética, ate a parte que abre e lê arquivo eu consegui não consigo ordenar em ordem alfabética alguém pode ajudar???

#include <stdio.h>
main()
{
FILE *arquivo;
char c;
char nome [41];
// Pergunta o nome do arquivo
printf ("Nome do arquivo: ");
scanf (" %40[^\n]",nome);
// Abre o arquivo para leitura
arquivo = fopen (nome, "r");
// Lê caracteres até o fim do arquivo
c = getc(arquivo);
while(c != EOF){
printf("%c", c);
c = getc(arquivo);
}
// Fecha o arquivo
fclose (arquivo);
}


falta eu conseguir exibir em ordem alfabética ordem alfabética. alguém poderia ajudar???


  


2. Re: Ler um arquivo texto e exiba o conteudo em ordem alfabetica

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 19/10/2016 - 09:06h

Pode armazenar os caracteres lidos num array e depois, ordenar utilizando o método qsort (quicksort)


#include <stdio.h>
#include <stdlib.h>

char string [64] = { 'l', 'i', 'n', 'u', 'x'}; // linux

int comparador (const void * a, const void * b) {
return ( *(char*)a - *(char*)b );
}

int main (void) {
const size_t largura = strlen(string);
qsort (string, largura, sizeof(string[0]), comparador);

for (size_t i = 0; i < largura; i++) {
printf ("%c ", string[i]);
}

return 0;
}


--
Uilian Ries
Linux Counter: 521986


3. Re: Ler um arquivo texto e exiba o conteudo em ordem alfabetica

amanda
mandinhat

(usa Outra)

Enviado em 19/10/2016 - 10:36h

uilianries escreveu:

Pode armazenar os caracteres lidos num array e depois, ordenar utilizando o método qsort (quicksort)


#include <stdio.h>
#include <stdlib.h>

char string [64] = { 'l', 'i', 'n', 'u', 'x'}; // linux

int comparador (const void * a, const void * b) {
return ( *(char*)a - *(char*)b );
}

int main (void) {
const size_t largura = strlen(string);
qsort (string, largura, sizeof(string[0]), comparador);

for (size_t i = 0; i < largura; i++) {
printf ("%c ", string[i]);
}

return 0;
}


--
Uilian Ries
Linux Counter: 521986


Mas no caso eu tenho quer ordenar o conteúdo que esta no arquivo .txt que vou abir de um diretório do computador.




4. Re: Ler um arquivo texto e exiba o conteudo em ordem alfabetica

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 19/10/2016 - 10:54h

mandinhat escreveu:

Mas no caso eu tenho quer ordenar o conteúdo que esta no arquivo .txt que vou abir de um diretório do computador.



E como eu já comentei acima, pode armazenar o conteúdo lido num array e dele ordená-lo.

--
Uilian Ries
Linux Counter: 521986


5. Re: Ler um arquivo texto e exiba o conteudo em ordem alfabetica

amanda
mandinhat

(usa Outra)

Enviado em 19/10/2016 - 11:00h

Mas eu não posso digitar no código o que esta no arquivo, tem que ordenar pegando as caracteres que estão no arquivo sejam elas qual for.

o usurário vai digitar caminho do arquivo , e vai exibir o que esta nele em ordem alfabética.


6. Re: Ler um arquivo texto e exiba o conteudo em ordem alfabetica

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 19/10/2016 - 11:48h

mandinhat escreveu:

Mas eu não posso digitar no código o que esta no arquivo, tem que ordenar pegando as caracteres que estão no arquivo sejam elas qual for.

o usurário vai digitar caminho do arquivo , e vai exibir o que esta nele em ordem alfabética.


Ninguém disse pra digitar o conteúdo hardcoded.

Novamente:
1) leia o arquivo;
2) armazene a leitura num array;
3) ordene este array.

Você já realizando a leitura através do getc, ao invés de guardar num char, guarde numa posição do array.


size_t pos = 0;
char string [256] = {0};
char cache = 0;
cache = getc(arquivo);
while(cache != EOF && pos < sizeof(string)) {
string[pos] = cache;
pos++;
}


--
Uilian Ries
Linux Counter: 521986






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts