一、 程序设计题目与说明
利用有穷自动机去除C语言代码行注释(//)以及块注释(/* */)
该有穷自动机的状态转换图如下:

二、 核心代码(或全部代码)

#include<stdio.h>
#include<stdlib.h>/*The encoding of this file is  GB2312(Simplified)*/
/*Please use GB2312(Simplified) encoding Otherwise it will cause garbled characters*/int main() {//该自动机存在6种状态 其中status0为初态  status4和status5为终态 enum {status0 = 0,status1 = 1,status2 = 2,status3 = 3,status4 = 4,status5 = 5,} state;FILE *fp_in, *fp_out;char ch, temp;state = status0;//当前文件作为输入fp_in = fopen("comments.c", "r");    //将去掉注释的文件写入 newfile.c 当中 fp_out = fopen("newfile.c", "w");   if( fp_in == NULL ) {printf("打开编译前代码comments.c失败!");getchar();exit(1);}if( fp_out == NULL ) {printf("打开编译后代码newfile.c失败!");getchar();exit(1);}while( (ch = fgetc(fp_in)) != EOF ){switch(state) {case 0: if(ch == '/') {state = status1;temp = ch;}else fputc(ch, fp_out);break;case 1: if(ch == '*') state = status2;else if( ch == '/' )    state = status5;else {state = status0;fputc(temp, fp_out);fputc(ch, fp_out);  }break;case 2: if(ch == '*') state = status3;break;case 3: if(ch == '/') state = status4;else if(ch == '*') state = status3;else state = status2;break;case 4: if(ch == '/') state = status1;else state = status0;break;  case 5: if(ch == '\n')  state = status0;break;default: break;}}//提示信息 printf("清除无用的注释完成\n");return 0;
}
/*文件尾*/

三、 测试数据和实验结果分析
测试的读入文件为本程序文件
输出结果保存在当前目录中新建的newfile.c当中
实验结果分析:成功去除行注释以及块注释

四、体会与收获
使用有穷自动机让编程的思路更加清晰明了。让编程更加简单。将输出结果保存在文件中,便于进行分析处理。

利用有穷自动机去除C语言代码行注释(//)以及块注释(/* */)相关推荐

  1. Intellij idea利用Statistic插件统计项目代码行数

    1 . 插件介绍 统计项目中各个文件的数量,大小,行数,平均等信息 根据扩展名自定义统计详细行数信息 , 包括总行数,代码行数,代码行数占比,注释行数,注释行数占比,空白行数,空白行数占比 自定义选择 ...

  2. java 方法数统计_利用Java简单实现一个代码行数统计器方法实例

    前言 哈喽,我是小黑, 最近学了java的输入输出流后一直心痒痒,总想找一点事情来做,所以用java代码来实现了一下统计代码的所有行数,看一下我上大学以来到底打了多少行. 先附上实现代码吧! pack ...

  3. PHP注释php中的注释分为两种:注释和块注释

    php中的注释分为两种:注释和块注释 行注释:一次注释一行 //: 后面跟的所有内容都是注释 //我是行注释 #:与//一样 #我是行注释 块注释:一次注释多行 /* 注释内容 */ /* 我 是 块 ...

  4. Android Studio查看代码行数和删除注释空行等

    在Android Studio中: 一.删除行注释 1.ctrl+r,打开替换功能.出现下图: 2.操作如图: 3.单击上图中的第4步替换之后,我示例程序中的那个黄色注释就没了,如果想要把所有行注释都 ...

  5. C语言代码行数分类统计小程序(源代码)

    1 需求分析  1) 问题描述: 读入一个(最多9个)C程序代码文件,统计程序中代码.注释和空行数以及函数的个数,显示函数名并生成相应的记录日志.  2) 基本要求如下:  (1).把程序文件(如.c ...

  6. c语言注释的作用文百,C语言注释-C语言行注释-C语言注释块注释-嗨客网

    C语言注释教程 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性.同时,注释也是一个程序员必须要具有的良好编程习惯.我们应该首先将自己的思想通过注释先整理出来,再用代码去体现. 在 C语言注 ...

  7. JAVA代码行数统计工具(是时候看看程序员真实的的代码量了)

    Author:天添豆浆 计算机科学与技术专业,迷摇滚的理科男 新手村码农,第二篇博客,康康有啥新的有趣玩意儿. 总所周知,代码就是程序员的刀程序员的剑,也是程序员的履历的映射. 有想过自己的代码量有多 ...

  8. eclipse java代码某一行需要修改注释_看看这些Java代码开发规范吧!你好,我好,大家好!...

    作为一名开发人员,当你接手他人的项目时,且当你阅读他人的代码时,是有没有遇到脑袋充血,感觉Java要把你"送走"的感觉呢?我们在用Java开发技术进行开发前,一定要牢牢恪守Java ...

  9. python项目代码量_python统计项目代码行数

    stat.py #!/usr/bin/env python3 # -*- coding: utf-8 -*- import chardet import os import sys # 定义注释的格式 ...

最新文章

  1. Matlab与线性代数 -- 矩阵的连接
  2. easyui下拉选项多怎么解决_头屑多、头皮痒到底该怎么办?这4个方法帮你解决...
  3. html5页面输出语句,使用html5输出文件
  4. 大数据将改变信息生命周期管理
  5. java 微网站_java架构之路-(微服务专题)初步认识微服务与nacos初步搭建
  6. html怎么自动设为底部,让底部永远在页面最底部显示的css方法
  7. python科学计算笔记(二)pandas获取网络文件
  8. 你碰到过的最难调试的 Bug 是什么样的?
  9. PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
  10. 1.Redis简介与基本命令
  11. 最小生成树 kruskal_使用Kruskal算法求解Java最小生成树问题
  12. 面试必备TCP三次握手
  13. MyBatis系列之浅谈SQL执行流程分析
  14. Redis基础(九)——发布与订阅
  15. Emmet的简写演示
  16. 随机森林随机回归预测_随机森林回归预测电子商务销售额
  17. 什么是冲激函数、时域卷积、冲激响应以及频响曲线
  18. 基于Qt、FFMpeg的音视频播放器设计二(FFMpeg视频处理之类封装)
  19. push_back、emplace_back、std::move
  20. ChromeDriver与Chrome版本对应关系及下载链接

热门文章

  1. TRS过期后解决办法
  2. Socket 网络协议 等
  3. centos7 gitlab的私有化部署
  4. Oracle clob怎么存储超过4000长度的数据,你了解吗
  5. 最新2022财报,亚信科技稳步转型
  6. ZJOI2020游记
  7. json spirit_Spirit App:Web实时轻松动画
  8. linux 安装拼音QQ
  9. 做动态图表,没有数据?用Python就能获取!
  10. MyCat —— 性能最好的数据库中间件