利用有穷自动机去除C语言代码行注释(//)以及块注释(/* */)
一、 程序设计题目与说明
利用有穷自动机去除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语言代码行注释(//)以及块注释(/* */)相关推荐
- Intellij idea利用Statistic插件统计项目代码行数
1 . 插件介绍 统计项目中各个文件的数量,大小,行数,平均等信息 根据扩展名自定义统计详细行数信息 , 包括总行数,代码行数,代码行数占比,注释行数,注释行数占比,空白行数,空白行数占比 自定义选择 ...
- java 方法数统计_利用Java简单实现一个代码行数统计器方法实例
前言 哈喽,我是小黑, 最近学了java的输入输出流后一直心痒痒,总想找一点事情来做,所以用java代码来实现了一下统计代码的所有行数,看一下我上大学以来到底打了多少行. 先附上实现代码吧! pack ...
- PHP注释php中的注释分为两种:注释和块注释
php中的注释分为两种:注释和块注释 行注释:一次注释一行 //: 后面跟的所有内容都是注释 //我是行注释 #:与//一样 #我是行注释 块注释:一次注释多行 /* 注释内容 */ /* 我 是 块 ...
- Android Studio查看代码行数和删除注释空行等
在Android Studio中: 一.删除行注释 1.ctrl+r,打开替换功能.出现下图: 2.操作如图: 3.单击上图中的第4步替换之后,我示例程序中的那个黄色注释就没了,如果想要把所有行注释都 ...
- C语言代码行数分类统计小程序(源代码)
1 需求分析 1) 问题描述: 读入一个(最多9个)C程序代码文件,统计程序中代码.注释和空行数以及函数的个数,显示函数名并生成相应的记录日志. 2) 基本要求如下: (1).把程序文件(如.c ...
- c语言注释的作用文百,C语言注释-C语言行注释-C语言注释块注释-嗨客网
C语言注释教程 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性.同时,注释也是一个程序员必须要具有的良好编程习惯.我们应该首先将自己的思想通过注释先整理出来,再用代码去体现. 在 C语言注 ...
- JAVA代码行数统计工具(是时候看看程序员真实的的代码量了)
Author:天添豆浆 计算机科学与技术专业,迷摇滚的理科男 新手村码农,第二篇博客,康康有啥新的有趣玩意儿. 总所周知,代码就是程序员的刀程序员的剑,也是程序员的履历的映射. 有想过自己的代码量有多 ...
- eclipse java代码某一行需要修改注释_看看这些Java代码开发规范吧!你好,我好,大家好!...
作为一名开发人员,当你接手他人的项目时,且当你阅读他人的代码时,是有没有遇到脑袋充血,感觉Java要把你"送走"的感觉呢?我们在用Java开发技术进行开发前,一定要牢牢恪守Java ...
- python项目代码量_python统计项目代码行数
stat.py #!/usr/bin/env python3 # -*- coding: utf-8 -*- import chardet import os import sys # 定义注释的格式 ...
最新文章
- Matlab与线性代数 -- 矩阵的连接
- easyui下拉选项多怎么解决_头屑多、头皮痒到底该怎么办?这4个方法帮你解决...
- html5页面输出语句,使用html5输出文件
- 大数据将改变信息生命周期管理
- java 微网站_java架构之路-(微服务专题)初步认识微服务与nacos初步搭建
- html怎么自动设为底部,让底部永远在页面最底部显示的css方法
- python科学计算笔记(二)pandas获取网络文件
- 你碰到过的最难调试的 Bug 是什么样的?
- PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
- 1.Redis简介与基本命令
- 最小生成树 kruskal_使用Kruskal算法求解Java最小生成树问题
- 面试必备TCP三次握手
- MyBatis系列之浅谈SQL执行流程分析
- Redis基础(九)——发布与订阅
- Emmet的简写演示
- 随机森林随机回归预测_随机森林回归预测电子商务销售额
- 什么是冲激函数、时域卷积、冲激响应以及频响曲线
- 基于Qt、FFMpeg的音视频播放器设计二(FFMpeg视频处理之类封装)
- push_back、emplace_back、std::move
- ChromeDriver与Chrome版本对应关系及下载链接