Ir ao conteúdo

C Criar novo arquivo .txt sem strings dentro de < >


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Olá pessoal, boa noite.

Estou realizando uma lista de exercícios da faculdade e empaquei nesse exercício.

 

"Faça um programa que abra um arquivo HTML e elimine todas as “tags” do texto, ou seja, o programa deve gerar um novo arquivo em disco que elimine todas as tags Html que são caracterizadas por comandos entre “<” e “>”. Veja abaixo um exemplo de um texto em HTML e do texto que deverá ser gerado pelo programa após eliminar as tags Html"

 

Não estou conseguindo interpretar como posso resolver o exercício.

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

int main (void){
    char letra ='\n'; //letra parametro para veriicar fim de linha
    char letra2 ='<';
    char letra3 ='>';

    setlocale(LC_ALL,"Portuguese");


    FILE *arquivo1 = fopen("Lista4Ex6_01.txt", "r");
    FILE *arquivo2 = fopen("Lista4Ex6_02.txt", "w");

    if(!arquivo1){
        printf("Erro ao abrir o arquivo");
    }
    if(!arquivo2){
        printf("Erro ao abrir o arquivo");
    }

    char textoOriginal[500];
    int i =0;
    char resultado[500];
    int j = 0;

    fgets(textoOriginal, sizeof textoOriginal, arquivo1);
    
    if(textoOriginal[i] == letra2){
        while(textoOriginal[i] != letra3){
            i++;
        }
    }else{
        while(textoOriginal[i+1] != letra2){
            resultado[j] = textoOriginal[i];
            i++;
            j++;
        }
    }

    fputs(resultado,arquivo2);
    

    fclose(arquivo1);
    fclose(arquivo2);
    return 0;
}

 

  • Obrigado 1
  • Solução
Postado

@Estalha    você não colocou o exemplo das tag's ,  e esse seu código está lendo uma única linha do arquivo txt , quando o  que precisa é ler todo o arquivo letra por letra ,  então melhor usar o fgetc ,  e para gravar no segundo arquivo use mesmo o fprintf ,  e seu código modificado ficou assim  :

#include<stdio.h>
#include<locale.h>
#include<string.h>
int main ()
{
    setlocale(LC_ALL,"Portuguese"); /// esse setlocale não ajuda
    FILE *arquivo1 = fopen("Lista4Ex6_01.txt", "r");
    FILE *arquivo2 = fopen("Lista4Ex6_02.txt", "w");
    if( ! arquivo1 )
    {
        printf("arquivo1 não encontrado !\n");
    }
    if( ! arquivo2 )
    {
        printf("erro ao criar o arquivo2\n");
    }
    int flg = 0;
    char c;
    while( (c = fgetc(arquivo1)) != EOF )  /// lê uma letra de cada vez no arquivo até o fim dele
    {
        if( c == '<')                      /// se encontrar esse caract '<'
            flg = 1;                       /// marca como encontrado e inicio da tag
        if( flg == 0 )                     /// se ainda não foi encontrado esse caract no arquivo
        {
            fprintf(arquivo2,"%c",c);      /// grava o caract no segundo arquivo
            printf("%c ",c);               /// escreve na tela o caract para vermos a saida
        }
        if( c == '>')                      /// se encontrar esse caract '>'
            flg = 0;                       /// marca como fim da tag
    }
    printf("fim da leitura\n");
    fclose(arquivo1);                      /// fechar o arquivo
    fclose(arquivo2);                      /// fechar o arquivo
    return 0;                              /// retorna para o windows o valor zero
}

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!