2014-07-07 4 views
-1

Ниже приведен код удаления замечаний из программы C, но код с удаленными комментариями хранится в другой программе.C программа для удаления комментариев из того же файла

#include<stdio.h> 

main(int argc , char *argv[]) 
{ 
    FILE *fp; 
    char ch; 
    fp=fopen(argv[1],"r"); 
    fp1=fopen(argv[2],"w"); 

    while(1) 
    { 
     ch=fgetc(fp); 
     if(ch==EOF) 
       break; 
     else 
     { 
       if(ch=='/') 
       { 
         ch=fgetc(fp); 
         if(ch=='/') 
         { 
           while(1) 
           { 
             ch=fgetc(fp); 
             if(ch=='\n') 
               goto label; 
           } 
         } 
         if(ch=='*') 
         { 
           while(1) 
           { 
             ch=fgetc(fp); 
             if(ch=='*') 
             { 
               ch=fgetc(fp); 
               if(ch=='/') 
               { 
                 while(1) 
                 { 
                   ch=fgetc(fp); 
                   goto label; 
                 } 
               } 
               else 
                 printf("*"); 
             } 
           } 
         } 
         else 
           printf("/"); 
       } 
     } 
     label: 
       fputc(ch,fp1); 
    } 
    fclose(fp); 
    fclose(fp1); 
} 

Теперь я хочу сделать программу, которая удаляет комментарий от той же file.So, когда мы открываем его комментарии не должны exist.Kindly направлять меня, потому что я не получаю ни малейшего представления, как сделать такую ​​программу?

+0

Вы пытались перезаписать fp с fp1 впоследствии? – mch

+0

Yuppp..Но его не работает .. – Muskaan

ответ

3

Это не простая задача, используя fgetc код не будет работать на таких вещах, как:

char *s = "Comments starts with /*"; 

, если его не упражнение, и вы используете gcc, я предлагаю, чтобы пропустить комментарии, используя fpreprocessed флаг:

gcc -fpreprocessed -P -dD -E test.c > cleancode.c 

А затем получить различия (комментарии) с diff:

diff -ignore-all-spaces test.c cleancode.c > comments.c 
Смежные вопросы