2014-07-07 59 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); 
} 

現在我想打一個程序,當我們打開它評論不應該exist.Kindly指導我,因爲我沒有得到任何想法如何使這樣的程序,可以消除同file.So有何評論?

+0

之後您是否嘗試用fp1覆蓋fp? – 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