2014-07-07 37 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