Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda Arquivos


Kolke

Pergunta

Oi pessoal, alguém pode me ajudar aí?

Escreva um programa para gravar de maneira intercalada em um arquivo de saída as

linhas de texto presentes em dois arquivos de entrada. Os nomes dos três arquivos devem

ser obtidos através da entrada padrão. O comportamento do programa é ilustrado abaixo:

entrada1.txt

A

B

entrada2.txt

D

E

C

saida.txt

A

D

B

E

C

Consegui fazer até aqui.

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    FILE*e;
    FILE*e1;
    FILE*s;
    char x[30];
    char y[30];
    int i=0,j=0,cont1=0,cont2=0;
    e=fopen("entrada.txt","wt");
    if(e==NULL)
    {
        printf("não possivel abrir");
        system("pause");
        return 1;
    }
    while(fgets(x,30,e)!=NULL)
    {
          cont1++;
    }
    e1=fopen("dado.txt","wt");
    if(e1==NULL)
    {
          printf("não possivel abrir");
          system("pause");
          return 1;
    }
    while(fgets(x,30,e1)!=NULL)
    {
          cont2++;
    }
    printf("%d %d",e,e1);
    s=fopen("saida.txt","wt");
    if(s==NULL)
    {
         printf("não foi possivel abrir o arquivo");
         system("pause");
         return 1;
    }
    if(cont1>cont2)
    {
      for(i=0;i<cont1;i++)
     {
                         if(i<cont2)
                         {
                              fscanf(e,"%s",x);
                              fprintf(s,"%s",x);
                              fscanf(e1,"%s",x);
                              fprintf(s,"%s",x);   
                         }
                         else
                         {
                                        
                             fscanf(e,"%s",x);
                             fprintf(s,"%s",x);
                         }
     }
    }  
    else
    {
                  for(i=0;i<cont2;i++)
                  {
                         if(i<cont1)
                         {
                              fscanf(e,"%s",x);
                              
                              fprintf(s,"%s",x);
                              fscanf(e1,"%s",x);
                              fprintf(s,"%s",x);   
                         }
                         else
                         {
                                        
                             fscanf(e,"%s",x);
                             fprintf(s,"%s",x);
                         }
                  }
     } 
     while(fscanf(s,"%s",x)!=EOF);
     {
          printf("%s",x);
     }
     fclose(s);
     return 0;
     system("pause");
}

Editado por Kolke
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Alguns comentários:

1) Coloque o código entre as tags [ code ] e [ /code ] ! Fica muito mais fácil para ver... :)

2) Abra todos os arquivos de uma vez pois, caso algum falhe, você não precisa perder tempo executando algo que será descartado.

3) Sempre que a abertura de um arquivo falha e você encerra o programa, feche os arquivos que haviam sido abertos com sucesso.

4) Já que as gravações têm que ser feitas intercaladas, faça o mesmo com as leituras! Ou seja: leia o primeiro arquivo, grave no destino, leia o segundo, grave no destino, reinicie até que ambas origens retornem EOF. O programa ficará bem mais simples desta forma. :)

Link para o comentário
Compartilhar em outros sites

  • 0
Alguns comentários:

1) Coloque o código entre as tags [ code ]e [ /code ] ! Fica muito mais fácil para ver...

2) Abra todos os arquivos de uma vez pois, caso algum falhe, você não precisa perder tempo executando algo que será descartado.

3) Sempre que a abertura de um arquivo falha e você encerra o programa, feche os arquivos que haviam sido abertos com sucesso.

4) Já que as gravações têm que ser feitas intercaladas, faça o mesmo com as leituras! Ou seja: leia o primeiro arquivo, grave no destino, leia o segundo, grave no destino, reinicie até que ambas origens retornem EOF. O programa ficará bem mais simples desta forma.

5) Fomata seu codigo tambem pra ficar mais facil o entendimento.

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos lá: você quer saber se algum moderador nnão vai te ajudar. Mas e o que os membros dizem, não importa?

Eu dei algumas dicas sobre o que você podia fazer para melhorar o código e falei como você tem que fazer o programa. Você nem falou nada sobre isso!

Você fez as mudanças que eu falei? Coloque o código aí que vamos fazendo juntos! Fazer tudo para você também não dá, né?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...