Ir ao conteúdo
  • Cadastre-se

Manipular arquivos em c


Alasca
Ir à solução Resolvido por 1freakday,

Posts recomendados

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!

Link para o comentário
Compartilhar em outros sites

  • Solução

Hello friend.

//P.S: Comentar o código vai facilitar sua vida

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

int Le_texto(char *v)
{
   FILE *fp;
   if ((fp=fopen("texto.txt","r"))==NULL)
   {
      printf("Não foi possivel abrir arquivo!");
      exit(1);
   }
  //Corrigindo sua linha fgets
   while(fgets(v,500, fp)!= NULL){
  	 printf("%s", v);
   }
   fclose(fp);
   return 0;
}
//void Corrigir (char v)
void Corrigir()
{
    char s1[] = "Mas, Bentinho";
    char s2[] = ",";
    char s3[] = " que e protonotario apostolico";
    char s4[] = "?";
   // char v[]; DECLARAÇÃO INCORRETA, E ESTA EM DESACORDO COM O PARAMETRO DA CHAMADA DA FUNÇÃO
    char v[500];
    strcat(s1, s2);
    strcpy(v, s1);
    puts(v);
    strcat(s3, s4);
    strcpy(v, s3);
    puts(v);
}
void Grava_texto(char *v)
{
 FILE *fp2;
   if ((fp2=fopen("textocerto.txt","w"))==NULL)
   {
      printf("Não foi possivel abrir arquivo!");
      exit(1);
   }
   //As duas linhas a seguir serve apenas apra ler o conteudo do arquivo
   //fgets(v,500, fp2); 
   //printf("%s", v);
   fprintf(fp2,"%s",v);
   fclose(fp2);
   //return 0; usando void como tipo de função

}
int main()
{
    char vetor[500];//Memoria ja alocada
    Le_texto(vetor);//Envia vetor alocado acima
    return 0;
}

 

Link para o comentário
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;
}


 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...