源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-02-22 21:57 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:实现去除c语言注释的小工具
去除C代码中的注释, 1. 单行注释//; 2. 多行注释/**/; 3. 单行注释以“\”结尾则下一行也为注释; 4. 字符串中的注释不处理。 说是C语言,但其实所有C语系的都可以,比如Java。 小工具:去除C语言注释 
[u]复制代码[/u] 代码如下:
#include <stdio.h> 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; }
测试代码
[u]复制代码[/u] 代码如下:
#include <stdlib.h> #include <stdio.h> 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; }
处理后的代码
[u]复制代码[/u] 代码如下:
#include <stdlib.h> #include <stdio.h> 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; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部