Jump to content
Joao Miguel

[Resolvido] open file

Recommended Posts

Joao Miguel

Boa noite. Para um projecto, tenho de numa primeira parte, abrir um ficheiro chama-se "Lista.txt" e dentro deste ficheiro, em cada linha, tem o nome de outros ficheiros que é necessário abrir para depois manipular o conteúdo deles. Contudo, não estou a conseguir abrir os ficheiros que estão na "Lista.txt".

Aqui vai o código que fiz:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_BUF_SIZE 1024

int main() {
 FILE *f;
 FILE *new_f;
 char buf[MAX_BUF_SIZE];
 char new_buff[MAX_BUF_SIZE];

 f = fopen("Lista.txt", "r");

 while(fgets(buf, sizeof(buf), f))
 {
   printf("%s", buf);

   new_f = fopen(buf, "r");

   while(fgets(new_buff, sizeof(new_buff), new_f));
   {
     printf("%s", new_buff);
   }
 }

 return 0;
}

Não está a funcionar... qualquer tipo de ajuda ou outra forma de fazer é muito bem vinda.

Obrigado.

Edited by pmg
GeSHi, formatacao

Share this post


Link to post
Share on other sites
pmg

A string lida contem o ENTER final. Esse ENTER não faz parte do nome do ficheiro.

Tira o ENTER do buf antes de proseguir

 while(fgets(buf, sizeof(buf), f))
 {
   buf[strlen(buf) - 1] = 0;
   printf("%s\n", buf);

   new_f = fopen(buf, "r");

Edited by pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Joao Miguel

Resultou, thanks. Mas agora o ciclo interior está a ler (fazer o printf) apenas do conteúdo da última linha dos ficheiros. Alguma ideia porquê?

Obrigado.

(código actualizado):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
   FILE *f;
   FILE *new_f;
   char buf[MAX_BUF_SIZE];
   char new_buff[MAX_BUF_SIZE];

   f = fopen("Lista.txt", "r");

   while(fgets(buf, sizeof(buf), f))
   {
       buf[strlen(buf) - 1] = 0;

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

       new_f = fopen(buf, "r");

       while(fgets(new_buff, sizeof(new_buff), new_f));
       {
           new_buff[strlen(new_buff) - 1] = 0;

           printf("%s \n", new_buff);
       }
   }

   fclose(new_f);
   fclose(f);

   return 0;
}

Não estou a conseguir descobrir o problema...

Edited by pmg
GeSHi, formatacao

Share this post


Link to post
Share on other sites
pmg

O teu segundo while não tem corpo :)

while (...) ;            // while sem corpo por causa do ponto e virgula
{                        // "corpo" desligado
 /* whatever */         // de qualquer estrutura
}                        // de controle

Edited by pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Joao Miguel

Oh my god, como é que fui meter um ; ali... se tive-se a compilar com warnings ja tinha visto isso à muito tempo...

Para quem vir este post, não se esqueçam de compilar de forma a obter o maior numero de warnings, poupa-vos muito tempo a descobrir onde estão os erros.

Muito obrigado.

  • Vote 1

Share this post


Link to post
Share on other sites
HappyHippyHippo

Oh my god, como é que fui meter um ; ali... se tive-se a compilar com warnings ja tinha visto isso à muito tempo...

Para quem vir este post, não se esqueçam de compilar de forma a obter o maior numero de warnings, poupa-vos muito tempo a descobrir onde estão os erros.

Muito obrigado.

não tinhas nenhum erro de sintaxe, não existiria nenhum warning para o que se sucedeu


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • 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.