Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

fo_11

Mini_problema

Mensagens Recomendadas

fo_11

Este programa tem como objectivo remover todos os comentários existentes num ficheiro de texto. Esses comentários encontram-se entre /* e */ tál como na linguagem c.

O programa corre muito bem mas deixa restos dos comentários, isto é, não consigo arranjar forma de eliminar tambem as barras das /* e */. Elimino o comentário por completo mas fico com as barras.

Alguem tem uma ideia de como resolver o problem?

#include<stdio.h>


int main()
{
    FILE *fp_o,*fp_c;
    char ch_1,ch_2,aux='a',name_o[30],name_c[30];
    int flag=0;
    
    do
     {printf("File name:");
      gets(name_o);
      if((fp_o=fopen(name_o,"r"))==NULL)
       printf("ERROR\nSuch file does not exist!!!\n\n\n");
     }while(fp_o==NULL);
     
     
     printf("File name 2:");
     gets(name_c);
     fp_c=fopen(name_c,"w");
     
    
     while((ch_1=fgetc(fp_o))!=EOF)//copia o que está num ficheiro para uma variável
      {ch_2=aux;
       aux=ch_1;
       
       if((ch_2=='/'&&ch_1=='*')||(ch_2=='*'&&ch_1=='/'))//verifica se é um comentário, o problema está aqui, só quando ch_2 e ch_1 possuiem os respectivos caracteres é que a falg passa a um
        flag=1-flag;//se for zero não é comentario se for um é comentário;
       
       if(flag==0)//se não for comentario copia se o caracter para outro ficheiro
        fputc(ch_1,fp_c);
       }
       fclose(fp_c);
       fclose(fp_o);
      
}
       

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HIT_Braga

Ois

Porque não usas o strtok para sacar apenas o que desejas para fora.

Lês uma linha inteira de cada vez. Pegas nessa string e fazes o strtok.

strtok(temp, "/")

Assim vai ler tudo até encontrar a barra.


" Elogios não me elevam, ofensas não me rebaixam, sou o que sou e não o que acham! "

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.