打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
删除C语言程序中所有的注释语句的实现代码
http://www.open-open.com/code/view/1431333852357
2015.05
一种解法非常好:状态机。在各种状态之间跳转,逻辑清晰,不易出错,出错了也容易调试。

下面把代码贴出来:

    #include <stdio.h>            int state;            int c1,c2;            void change_state(int c);            int main(int argc, const char * argv[]) {          int c;          state = 0;          c1 = 0;          c2 = 0;          while ((c=getchar())!=EOF) {              c1 = c2;              c2 = c;              change_state(c);          }          if (/* DISABLES CODE */ (0)==1) {              printf("just test://abcd");              printf("just test:/*hello*/");          }      }            /*状态机函数*/      void change_state(int c){          if (state==0) {//普通状态              if (c=='/') {                  state = 1;              }else if (c=='"'){                  state = 5;                  putchar(c);              }else if (c=='\''){                  state = 6;                  putchar(c);              }              else{                  state = 0;                  putchar(c);              }          }else if (state==1) {//检测到1个'/'              if (c=='/') {                  state = 2;              }else if (c=='*'){                  state = 3;              }else{                  state = 0;                  putchar(c1);                  putchar(c);              }          }else if (state==2) {// "//"注释状态              if (c=='\n') {                  state = 0;                  putchar(c);              }else{                  state = 2;              }          }else if (state==3) {// "/*"注释状态              if (c=='*') {                  state = 4;              }else{                  state = 3;              }          }else if (state==4) {              if (c=='/') {                  state = 0;              }else{                  state = 3;              }          }else if (state==5){//在"字符串里              if (c=='"') {                  state = 0;                  putchar(c);              }else if(c=='\\'){                  state = 7;                  putchar(c);              }else{                  state = 5;                  putchar(c);              }          }else if (state==6){//在'字符里              if (c=='\'') {                  state = 0;                  putchar(c);              }else if(c=='\\'){                  state = 8;                  putchar(c);              }else{                  state = 6;                  putchar(c);              }          }else if (state==7){//在"字符串里的"\"              state = 5;              putchar(c);          }else if (state==8){//在'字符串里的"\"              state = 6;              putchar(c);          }      }  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
设计模式之状态模式(一)
【精品博文】关于FPGA处理中断
有限状态机详解(转载)
关于ffmpeg 中对ff_h264_find_frame_end 的分析
【考试技巧】输入输出优化
第九讲 if()
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服