当前位置:  编程技术>c/c++/嵌入式

实现去除c语言注释的小工具

    来源: 互联网  发布时间:2014-10-24

    本文导语:  去除C代码中的注释,1. 单行注释//;2. 多行注释/**/;3. 单行注释以“”结尾则下一行也为注释;4. 字符串中的注释不处理。说是C语言,但其实所有C语系的都可以,比如Java。 小工具:去除C语言注释  代码如下:#include int main(...

去除C代码中的注释,
1. 单行注释//;
2. 多行注释/**/;
3. 单行注释以“”结尾则下一行也为注释;
4. 字符串中的注释不处理。
说是C语言,但其实所有C语系的都可以,比如Java。


小工具:去除C语言注释 

代码如下:

#include

int main(int argc, char* argv[]) {
  enum {
    literal,
    single,
    multiple,
    string
  } mode = literal;
  char last = 0, current;

  while ((current = getchar()) != EOF) {
    switch (mode) {
    case single: {
      if (last != '\' && (current == 'n' || current == 'r')) {
        putchar(current);
        current = 0;
        mode = literal;
      }
    } break;
    case multiple: {
      if (last == '*' && current == '/') {
        current = 0;
        mode = literal;
      }
    } break;
    case string: {
      if (last == '\') {
        putchar(last);
        putchar(current);
      } else if (current != '\') {
        putchar(current);
        if (current == '"') {
          mode = literal;
        }
      }
    } break;
    default: {
      if (last == '/') {
        if (current == '/') {
          mode = single;
        } else if (current == '*') {
          mode = multiple;
        } else {
          putchar(last);
          putchar(current);
        }
      } else if (current != '/') {
        putchar(current);
        if (current == '"') {
          mode = string;
        }
      }
    } break;
    }
    last = current;
  }

  return 0;
}

测试代码

代码如下:

#include
#include

int main (int argc, char *argv[])
{
// not show
not show
not show
// not show
/* not show */
    int is; // not show
    int/* not show */ ms; /* not show */
    double ds; // not show
    not show
    not show
    double dm; /* ...
    not show
    not show */ float fs; /**
                           * now show
                           */
    float/**/ fm;
    char cs[] = "aaa // /***/";
    char cm1[] = /* not show */"hello*/";
    char cm2[] = "/*redraiment"/* not show */;
    /* printf("/////"); */
    return EXIT_SUCCESS;
}

处理后的代码

代码如下:

#include
#include

int main (int argc, char *argv[])
{

 

    int is;
    int ms;
    double ds;
    double dm;  float fs;
    float fm;
    char cs[] = "aaa // /***/";
    char cm1[] = "hello*/";
    char cm2[] = "/*redraiment";

    return EXIT_SUCCESS;
}


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • c语言实现MD5算法完整代码示例
  • 网站重定向用C语言实现iptables,ACL实现
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • C语言实现的mogstored守护进程 cmogstored
  • c语言基于libpcap实现一个抓包程序过程
  • Linux 下的C语言实现数据库连接池操作。
  • MD5算法的C语言实现
  • 如何在linux下用c语言实现ftp编程
  • C语言的KD树实现 kdtree
  • 如何实现类似PHP.PB等语言中eval的函数功能?
  • 怎样用JAVA语言实现对串口的操作?
  • 请问《软件工程java语言实现》一书在那里能下载
  • R语言的Java实现 FastR_
  • LINUX下用C语言实现修改目录名字。
  • 求在linux下用c语言实现数据库连接池的操作。
  • linux下FTP服务器与客户端的C语言实现
  • 类似于Shell界面下setup命令的文本模式菜单用C语言如何实现
  • PHP 语言实现 HippyVM
  • java语言实现监控程序
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3