Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

specian

problemas com leitura de arquivos em c

Recommended Posts

Senhores,

Por favor estou com dois problemas quanto a leitura de arquivos em C.

 

Tenho um arquivo txt o qual tem cerca de 65K e preciso capturar algumas informações que estão dentro dele e descartar outras.

 

Toda linha do arquivo que preciso capturar fica abaixo de uma linha que comeca com '#', a linha de baixo nao existe um padrao definido. Entao essa linha com '#' eu consigo captura-la, agora e a debaixo?

Como eu faço para que ao inves de apontar para a linha que eu especifiquei no codigo ela aponte para a que fica abaixo dela?

 

O segundo problema é.... como faço para capturar uma palavra que esta dentro desse arquivo, eu ate usei um POG(programação orientada a gambiarra) rsrsrsrsr

 

capturei caracter por caracter joguei em um vetor, concatenei cada posição em uma variavel e depois comparei com o que eu precisava....

 

funciona, mas achei muito porco, acho que deve ter uma maneira mais facil...so nao sei qual....

 

se puderem me ajudar em qq um dos dois problemas, ja fico mais que agradecido....

 

Forte abraço!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu uma olhada no comando fseek ?

ele posiciona o cursor em determinado parte do seu txt.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

ate cheguei a pesquisar sobre essa funcao, mas pelo que eu havia entendido, ela é randomica que nao havia um lugar especifico onde eu possa colocar.

 

por gentileza, teria algum exemplo so p eu tomar como base de pesquisa.

 

Muito obrigado.

 

abraços!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função fseek não é randomica, se ela fosse não haveria utilidade!

A declaração dela é:

int fseek ( FILE * stream, long int offset, int origin );

E origin pode receber os valores:

SEEK_SET -> Começo do arquivo

SEEK_CUR -> Posição atual

SEEK_END -> Final do Arquivo

 

uma chamada à

fseek(pFile, 12, SEEK_CUR);
Irá avançar 12 bytes a partir da posição atual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu vou sugerir assim.

Aproveita que o teu arquivo tá dividido em linhas, e que a função fgets lê caracteres até chegar no limite de caracteres que pediu, ou encontrar uma nova linha ou EOF. Lê uma linha, compara o primeiro caractere, se for # vê qual é o resto da linha pra comparar com o comando que tu quer ver, se for a parte que tu quer, lê denovo com fgets que tu vai pegar a outra linha que tu quer aí é só usar ela. Se não for vai lendo até achar outra linha onde o primeiro caracter da string lida é #, aí verifica denovo. Assim tu acha!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.