Ir para conteúdo

Arquivado

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

Alasca

Manipular arquivos em C

Recommended Posts

Estou com tendo alguns erros ao escrever um programa para corrigir o texto gravado em texto.txt. A correção deveria inserir uma vírgula após a palavra Bentinho e uma interrogação no fim da frase. Para isso, é preciso ler o arquivo de entrada texto.txt e fazer as correções, então gravar a nova frase em um novo arquivo chamado textocerto.txt.

Esse é o conteúdo de texto.txt.

Mas, Bentinho que e protonotario apostolico

Esse é o código:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int Le_texto(char v[500])
{
   FILE *fp;
   if ((fp=fopen("texto.txt","r"))==NULL)
   {
      printf("Não foi possivel abrir arquivo!");
      exit(1);
   }


   fgets(v,500, fp);
   printf("%s", v);


   fclose(fp);
   return 0;
}


void Corrigir (char v)
{


    char s1[] = "Mas, Bentinho";
    char s2[] = ",";
    char s3[] = " que e protonotario apostolico";
    char s4[] = "?";
    char v[];


    strcat(s1, s2);
    strcpy(v, s1);
    puts(v);
    strcat(s3, s4);
    strcpy(v, s3);
    puts(v);
}


void Grava_texto(char v[500])
{
 FILE *fp2;
   if ((fp2=fopen("textocerto.txt","w"))==NULL)
   {
      printf("Não foi possivel abrir arquivo!");
      exit(1);
   }


   fgets(v,500, fp2);
   printf("%s", v);


   fclose(fp2);
   return 0;




}


int main()
{
    char vetor[500];
    Le_texto(vetor);


return 0;
}

Se alguém puder ajudar agradeço muito!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom @Arcanck, a ideia é corrigir o texto e gravá-lo em outro arquivo. Mas não estou conseguindo criar o outro arquivo com o texto corrigido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Olha, dei uma olhada rapida no codigo e dei uma corrigida basica, dê uma olhada e veja se consegue entender o que estava acontecendo de errado.

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

int Le_texto ( char v[] )
{
    void Corrigi_texto ( char [] );

    FILE *fp;

    if ( ( fp = fopen ( "texto.txt", "r" ) ) == NULL )
      {
         printf ( "Não foi possivel abrir arquivo!" );
         exit ( 1 );
      }

   fgets ( v, 500, fp );
   printf ( "%s", v );

   fclose ( fp );

   Corrigi_texto ( v );

   return 0;
}


void Corrigi_texto ( char v[] )
{
     void Grava_texto ( char [] );

     Grava_texto ( v );
}


void Grava_texto ( char v[] )
{
     FILE *fp2;

     if ( ( fp2 = fopen ( "textocerto.txt", "w" ) ) == NULL )
       {
          printf ( "Não foi possivel abrir arquivo!" );
          exit ( 1 );
       }

     fputs ( v, fp2 );
     printf ( "%s", v );

     fclose ( fp2 );
}

int main()

{
   int Le_texto ( char [] );

   char vetor [ 500 ];

   Le_texto ( vetor );

   return 0;
}

Basicamente o texto corrigido não era criado porque voce não chamava a função que continha o codigo para a tarefa, alem disso voce estava usando a função fgets(), quando o correto seria fputs()!

Ubuntu 14.04 LTS - GCC 4.8 - CodeBlocks 13.12

Valeu e ate a Proxima ! ! !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz algumas modificações no código e uni as funções de corrigir e gravar o texto. Agora está funcionando tudo certo.


Obrigada pela ajuda!



Segue o código final:




#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int Le_texto(char v[500])
{
FILE *fp;
if ((fp=fopen("texto.txt","r"))==NULL)
{
printf("Não foi possivel abrir arquivo!");
exit(1);
}


fgets(v,500, fp);
printf("%s", v);


fclose(fp);
return 0;
}


void Grava_texto()
{
char s1[] = "Mas, Bentinho";
char s2[] = ",";
char s3[] = " que e protonotario apostolico";
char s4[] = "?";
char v[500];
strcat(s1, s2);
strcat(s1, s3);
strcat(s1, s4);
strcpy(v, s1);
puts(v);


FILE *fp2;
fp2=fopen("textocerto.txt","w");
if(fp2 == NULL)
{
printf("Erro na abertura do arquivo!");
exit(1);
}
fprintf(fp2, "%s", v);


fclose(fp2);
printf("\n\nDados gravados com sucesso!");


getch();
exit(1);


}


int main()
{
char v[500];
printf("Texto original:\n");
Le_texto(v);
printf("\n");




printf("Texto corrigido:\n");
Grava_texto(v);


return 0;
}

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.