Ir ao conteúdo
  • Cadastre-se
RockYasha

C Leitura e ordenação de arquivo TSV

Recommended Posts

Ajuda com Linguagem C. Armazenar valores de um arquivo TSV em variaveis.?

Estou com um problema, em que eu preciso ordenar um arquivo TSV, porém eu não estou nem conseguindo armazenar os dados em uma variável para começar a ordenação. 
Em arquivos como txt e csv que costumam utilizar virgulas ou outro tipo de separador, eu consigo facilmente, porém nesse arquivo TSV, a divisão é dada por espaços, porém diferentes em cada campo. 
Já tentei usar o numero da tabela ascii, transformar o tab em virgula e não obtive nenhum sucesso, alguém pode me ajudar? 
É necessário apenas conseguir armazenar os valores nas variaveis, para que depois eu consiga fazer a ordenação. Segue um exemplo do arquivo abaixo: 


307 Abraham Lincoln UNITED STATES 
308 Aristotle Greece 
339 Ayn Rand Russia 
595 Andre Agassi UNITED STATES 
628 Aldous Huxley UNITED KINGDOM 
676 Andrei Tarkovsky Russia 
700 Arthur Schopenhauer POLAND 
736 Albert Einstein Germany 
783 Alexander the Great Greece 
808 Alfred Hitchcock UNITED KINGDOM 
841 Attila the Hun Hungary 


Obrigado.

testePantheon.txt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um arquivo TSV é um arquivo que separa seus campos por TAB (tecla Tab ↹). Seja no singular ou nu plural entre os campos existe um número padrão de tab. Acredito que uma tecla tab separa os campos.

 

O aspecto C da questão é determina qual é o caractere TAB e aplicar-lo o mesmo algoritmo que aplicará para ponto-virgula, virgula ou qualquer outro caractere. Caso os campos estejam separados apenas por espaço, apenas 1 espaço, então temos ai um equivoco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@RockYasha 3 espaços separam um campo. Assim sendo, existem apenas 2 campos o fim do primeiro é marcado pela presença de 3 espaços seguidos. Se você tem conhecimento em estruturas de repetição e decisão então é isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fscanf(fp,"%[^,] %s %s",dados.num, dados.nome, dados.pais);
Quando eu coloco esse fscanf, siginiva que eu quero ler ate a virgula, como eu faço pra ser 3 espaços ou tab?

 

eu sei que o tab na tabela ascii equivale a 9
tem como eu usar esse numero para identificar o tab?

 

Obrigado.
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@RockYashapara tab coloque o escape tab \t

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

×