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

micront

ajuda com ficheiros

18 mensagens neste tópico

como faço para abrir um ficheiro e colocar o seu conteudo no ecra,ando farto de dar voltas e nao consigo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

esse programa ao correr cria um novo ficheiro,eu cria abrir um ficheiro ja existente e ao mesmo tempo que o abra para se poder ver o que tem la escrito

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens de usar a função fopen para abrir o ficheiro e de seguida usas a fgets para ler o conteúdo linha a linha e imprimes no monitor com printf.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

int main()

{

  FILE * pFile;

  char buffer [100];

  pFile = fopen ("myfile.txt" , "r");

  if (pFile == NULL) perror ("Error opening file");

  else

  {

    while ( ! feof (pFile) )

    {

      fgets (buffer , 100 , pFile);

      fputs (buffer , stdout);

    }

    fclose (pFile);

  }

  return 0;

Ja agora podiam ajudar a compreender estas linhas de codigo,sou iniciante e estou com alguma dificuldade em entender principalmente a parte do ciclo while :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Enquanto não chegar ao fim do ficheiro apontado pelo pFile (vê a documentação da função feof), lê do ficheiro 100 caracteres para um buffer (uma string), e imprime esses mesmos caracteres no ecrã. Por fim, fecha o ficheiro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

FILE * pFile;

  char string [100];

  pFile = fopen ("Lista P.Erdos" , "r");

  if (pFile == NULL) perror ("Erro ao abrir o ficheiro");

  else {

    fgets (string , 100, pFile);

    puts (string);

    fclose (pFile);

  }

    return 0;

fiz este programa para ler linha a linha do ficheiro mas nao estou a conseguir

alguem me pode ajudar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens de meter um while a englobar as 2 primeiras instruções do else.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja consegui mas se tiver mais do que uma palavra na mesma linha e quiser meter essas palavras em linhas diferentes como faço.

Vou escrever um exemplo para se perceber melhor:

joao,carlos,jose,joaquim.

output

joao

carlos

jose

joaquim

:wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens de fazer parsing dessa linha, podes usar a função strtok para esse efeito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já tens o while feito?

É dentro do while, depois do fgets.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja andei a experimentar e nada nao consigo por a funcionar com essa funçao :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

dentro do while fiz o seguinte:

else {

      while(fgets (string , 100, pFile))

     

      puts(string);

  }

    fclose (pFile);

a seguir a  while(fgets (string , 100, pFile)) coloco a funçao strtok

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

fiz o seguinte e da me erro segment fault

  FILE * pFile;

  char string [100];

  pFile = fopen ("Lista P.Erdos" , "r");

  if (pFile == NULL) perror ("Erro ao abrir o ficheiro");

  else {

      while(fgets (string , 100, pFile),pFile!=NULL)

      {

          printf("%s\n",pFile);

          pFile=strtok(NULL,",.-");

      puts(string);

  }

    fclose (pFile);

  }

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