• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ngz

Duvida de ficheiros

5 mensagens neste tópico

Boas pessoal,

gostava que me dessem uma ajudinha com uma dúvida que tenho...

neste ficheiro ...

xpto.txt

Instituto Superior Tecnico,

Departamento de Engenharia Informatica

eu quero guardar cada palavra numa lista.

Até ao Tecnico dá-me bem, mas depois o próximo elemento da lista é um espaço e deveria ser o Departamento.

Tenho um ciclo pa percorrer o ficheiro, caracter a caracter, e caso seja um '.'  ' '  ','  '\n'  '\t'  '\0'  coloco a palvra vista até então num nó da lista...

Mas  quando muda de linha ou quando estou nos últimos caracteres do ficheiro isto n funciona ... n consigo descobrir pk... se alguém me puder ajudar agredecia  ;)

Cumpz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sem ver o código é um bocadinho difícil de saber mas eu diria que o teu problema é meteres a palavra quando encontras um desses caracteres.

Ora o que é que acontece na primeira linha?

Começas a guardar letras, encontras um espaço e guardas Instituto, continuas a guardar letras, encontras um espaço e guardas Superior, continuas a guardar letras, encontras a vírgula e guardas Tecnico, e depois não chegas a guardar nenhuma letra porque a seguir à vírgula encontras um '\n' e guardas o que encontraste a seguir à virgula, ou seja, nada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma coisa que pode ser melhor fazeres também, é não decidires as palavras ao encontrares algo que não queres, mas sim quando não encontrares o que queres.

Ou seja não procuravas por caracteres especificos que não queres como o '.' ou a ','. Mas sim fazeres uma busca que só guarda enquanto encontrar letras e o '-' (e numeros se quiseres).

Algo como if( var < 'a' && var > 'z' && etc... ) deve servir para o que queres, é que existem muitos mais simbolos que podem aparecer que não fazem parte de uma palavra.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Algum motivo para não fazeres isto?

while (!feof(ficheiro)) 
  fscanf(ficheiro,"%s",lista[n++]);

Depois era só implementar umas funções de trim, para remover os caracteres com o "," etc do final.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boaz!

Obrigado pela ajuda... ja consegui resolver o problema seguindo a ideia do merlin3000.

cumpz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora