Jump to content

ficheiros em C


Voltriz
 Share

Recommended Posts

como consigo ler uma linha especifica x de um ficheiro? em linguagem C. (em tempo constante)

Com uma variável podes controlar isso, por exemplo:

i=0;

while (fgets(ficheiro)...

    i++;

    if(i=4) // se i = à 4ª linha

        fazes aqui o que pretenderes...

outra duvida é como consigo percorrer um ficheiro qualquer a começar numa linha x (em vez de começar no inicio do ficheiro)

obrigado

Isso é difícil mas podes usar o fseek, e tentar posicionar no '\n'º que queres pesquisar.

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

Com uma variável podes controlar isso, por exemplo:

i=0;

while (fgets(ficheiro)...

    i++;

    if(i=4) // se i = à 4ª linha

        fazes aqui o que pretenderes...

isso não vai ser tempo constante, mas obrigado pela ajuda!

o Rui Carlos é capaz de ter razão... não dá em tempo constante.

thanks aos dois

Link to comment
Share on other sites

Isso é difícil mas podes usar o fseek, e tentar posicionar no '\n'º que queres pesquisar.

tive a ver o fseek e isso é usado para avançar x caracteres do ficheiro, o que é interessante... 

/* fseek example */
#include <stdio.h>

int main ()
{
  FILE * pFile;
  pFile = fopen ( "myfile.txt" , "w" );
  fputs ( "This is an apple." , pFile );
  fseek ( pFile , 9 , SEEK_SET );
  fputs ( " sam" , pFile );
  fclose ( pFile );
  return 0;
}

After this code is successfully executed, the file myfile.txt contains:

This is a sample.

não existe uma função idêntica só que para linhas?

Link to comment
Share on other sites

O problema é que avançar um caracter é fácil, pois sabe-se à partida o seu tamanho. As linhas podem ter um tamanho qualquer, por isso é impossível de fazer algo igual ao fseek. A menos que tenhas uma estrutura de dados auxiliar que te diga a posição de início de cada linha.

sim tenho 1 array onde me indica as linhas que pretendo!

Link to comment
Share on other sites

Aquilo que eu queria dizer era um array com a posição de início de cada linha. Por exemplo, a 1ª linha tem n caracteres, a 2ª n', a 3ª n'', etc. e teres um array que te dizia que a primeira linha começava no caracter 0, a 2ª no caracter n, a 3ª no caracter n+n', a 4ª n+n'+n'', etc.

Assim, poderias usar o fseek.

Link to comment
Share on other sites

como consigo ler uma linha especifica x de um ficheiro? em linguagem C. (em tempo constante)

Com uma variável podes controlar isso, por exemplo:

i=0;

while (fgets(ficheiro)...

    i++;

    if(i=4) // se i = à 4ª linha

        fazes aqui o que pretenderes...

outra duvida é como consigo percorrer um ficheiro qualquer a começar numa linha x (em vez de começar no inicio do ficheiro)

obrigado

Isso é difícil mas podes usar o fseek, e tentar posicionar no '\n'º que queres pesquisar.

Atenção que isso pode não funcionar! O fgets pode devolver apenas metade de uma linha, dependendo do tamanho do buffer utilizado.

<3 life

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.