C/C++ Comment Remover 0 By DaNmarner Released

记得《The C Programming Language》写有一道练习就是写一个去掉注释的程序,今天把它重写了一遍,发现好简单啊。这个小程序是我在cmd下面用vim+gcc+gdb敲出来的算是热热手。

我把它叫做C/C++ Comments Remover ,这个版本是0。实现了删除/**/和//两种注释的基本功能。

用法是:ccr 源文件.c [目标文件.c]

如果没有目标文件,就产生一个 源文件_CCRed.c的输出文件。

这个CCR00.zip里有代码和可执行程序 

代码如下:

 

/*
 * C/C++ CommentRemover 0 by DaNmarner      
 * DaNmarner@gmail.com Http://blog.csdn.net/DaNmarner                
 * Just basiclly remove the comments      
 * 10/27/2006 
 
*/
                          
#include
< stdio.h >
#include
< string .h >
#include
< stdlib.h >
#define  DEBUG_

void  do_quote( void );
int  rcomment( void );
void  showhelp( void );

FILE 
* src_f, * dest_f;

int  main( int  argc, char   * argv[])
{
    
char dest[256];
    
int rmn=0;
    
char c1;

    
if (argc!=2 && argc!=3{
        showhelp();
        
return 0;
    }


    
if((src_f=fopen(argv[1],"r"))==NULL){
        printf(
"Error opening file %s ",argv[1]);
        
return 0;
    }

    
if(3==argc) strcpy(dest,argv[2]);
    
else {
        strcpy(dest,argv[
1]);
        strcpy(strrchr(dest,
'.'),"_CCRed");
        strcat(dest,strrchr(argv[
1],'.'));
    }

    
if((dest_f=fopen(dest,"w"))==NULL){
        printf(
"Error creating file %s ",dest);
        
return 0;
    }

    
#ifdef DEBUG
    dest_f
=stdout;
#endif
    
while((c1=fgetc(src_f))!=EOF){
        
if(c1=='/'
            rmn
+=rcomment()?1:0;
        
else if(c1=='"') do_quote();
        
else if(c1=='/'){
            fputc(c1,dest_f);
            
if((c1=fgetc(src_f))!=EOF)
                fputc(c1,dest_f);
        }
else fputc(c1,dest_f);
    }

    printf((rmn
==0)?" No C/C++ comment exists, ":
            
" Successfully removed %d commments! ",rmn);
    printf(
"Please check output file %s ",dest);
    
return 0;
}

void  showhelp( void )
{
    puts(
" C/C++ Comment Remover by DaNmarner 2006.11");
    puts(
"Http://blog.csdn.net/DaNmanrer DaNmarner@gmail.com ");
    puts(
" Function: Remove Comments of C/C++ sytle from source file.");
    puts(
" Useage: ccr SourceFile [Destination] ");
}


int  rcomment( void )
{
    
int c,itis=1;
    
if((c=fgetc(src_f))==EOF) exit(0);
    
else 
        
if(c=='/'
            
while((c=fgetc(src_f))!=' ' && c!=EOF);
        
else if(c=='*'{
            
int in_comment=1;
            
while(in_comment){
                c
=fgetc(src_f);
                
if (c==EOF) exit(0);
                
else if (c=='*')
                    
if((c=fgetc(src_f))=='/')
                        in_comment
=0;
                    
else if(c==EOF) exit(0);
            }

        }
else
            fputc(
'/',dest_f);
            fputc(c,dest_f);
            itis
=0;
        }

    
return itis;
}


void  do_quote( void )
{
    
int c,in_quote=1;
    fputc(
'"',dest_f);
    
while(in_quote)
        
if((c=fgetc(src_f))==EOF) exit(0);
        
else{
            
if(c=='/'){
                fputc(
'/',dest_f);
                fputc(fgetc(src_f),dest_f);
            }
 else if(c=='"'){
                fputc(c,dest_f);
                in_quote
=0;
            }
else fputc(c,dest_f);
        }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Silence Remover是一种功能强大的软件或工具,旨在自动检测和删除音频文件中的静音部分。它通常用于处理录音文件、音乐制作和后期制作过程中。Silence Remover可以提高音频文件的质量,使其更具可听性和专业度。 使用Silence Remover很简单。用户只需将要处理的音频文件导入工具,设置相应的参数,然后开始处理。工具将自动检测和识别音频文件中的静音部分,并将其删除或削减,从而减少不必要的空白时间。除此之外,用户还可以根据需要设置静音阈值,以控制删除的静音部分的长度。 Silence Remover对于音频制作和后期制作过程非常有用。在录音过程中,有时会出现意外的停顿或空白时间,这些静音部分可能会影响音频的连贯性和流畅度。通过使用Silence Remover,可以快速而准确地删除这些不需要的静音部分,使音频更加流畅和连贯。 此外,Silence Remover还可以用于音乐制作过程中。在混音和编辑音乐时,可能需要根据曲目的需要删除一些静音部分。Silence Remover可以快速帮助音乐制作人识别并删除这些静音部分,使音乐更加紧凑和连贯。 总之,Silence Remover是一种非常实用的工具,可以有效地删除音频文件中的静音部分。通过使用此工具,用户可以提高音频的质量和专业度,并为录音、音乐制作和后期制作过程节省时间和精力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值