Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
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.
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 ! ! !
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;
}
Olá!
Poderia descrever que erros está recebendo?