c语言注释和代码互换,c语言项目—注释转换(c——c++)
题目要求:
要将全部的c语言风格的注释转换为c++风格的注释,如下图所示,需要将input.c文件经过注释转换程序转换为output.c文件所示。
这是测试结果:
首先我们来分析一下这个题目,在做这个项目时,我们需要引进有限状态机这个概念。那我们先来了解一下什么是有限状态机。
有限状态机FSM是软件上一种常用的处理方法,他把复杂的控制逻辑分成有限个稳定状态,在每个状态上进行处理。
我们来画一下状态图:
所以我们把这个项目分成这几个状态。NUL_STATE, C_STATE, CPP_STATE, EMD_STATE
现在我们来实现一下这个项目。
"CommentConvert.h"#ifndef __COMMENT_CONVERT_H__
#define __COMMENT_CONVERT_H__
#include
#include
#define INPUTFILENAME "input.c"
#define OUTPUTFILENAME "output.c"
enum STATE
{
NUL_STATE,
C_STATE,
CPP_STATE,
EMD_STATE
};
void CommentConvert(FILE *pRead,FILE *pWrite);
void do_nul_state(FILE *pRead,FILE *pWrite);
void do_c_state(FILE *pRead,FILE *pWrite);
void do_cpp_state(FILE *pRead,FILE *pWrite);
#endif //__COMMENT_CONVERT_H__
"CommentConvert.c"#include"CommentConvert.h"
enum STATE state;
void CommentConvert(FILE *pRead,FILE *pWrite)
{
while(state!=EMD_STATE)
{
switch(state)
{
case NUL_STATE:
do_nul_state(pRead,pWrite);
break;
case C_STATE:
do_c_state(pRead,pWrite);
break;
case CPP_STATE:
do_cpp_state(pRead,pWrite);
break;
case EMD_STATE:
break;
}
}
}
void do_nul_state(FILE *pRead,FILE *pWrite)
{
int first=0;
int second=0;
first = fgetc(pRead);
switch(first)
{
case '/':
{
second=fgetc(pRead);
if(second=='*')
{
fputc('/',pWrite);
fputc('/',pWrite);
state=C_STATE;
}
else if(second=='/')
{
fputc(first,pWrite);
fputc(second,pWrite);
state=CPP_STATE;
}
else
{
fputc(first,pWrite);
fputc(second,pWrite);
}
}
break;
case EOF:
state=EMD_STATE;
break;
default:
fputc(first,pWrite);
break;
}
}
void do_c_state(FILE *pRead,FILE *pWrite)
{
int first=0;
int second=0;
int third=0;
first = fgetc(pRead);
switch(first)
{
case '*':
{
second=fgetc(pRead);
switch(second)
{
case '/':
third=fgetc(pRead);
if(third!='\n')
{
fputc('\n',pWrite);
//fputc('/',pWrite);
//fputc('/',pWrite);
state=CPP_STATE;
}
if(third=='/')
{
ungetc(third,pRead);
state=NUL_STATE;
break;
}
else
{
fputc(third,pWrite);
state=NUL_STATE;
break;
}
case'*':
third=fgetc(pRead);
fputc(first,pWrite);
if(third=='/')
{
state=NUL_STATE;
}
break;
default:
fputc(first,pWrite);
fputc(second,pWrite);
break;
}
break;
case'\n':
fputc(first,pWrite);
fputc('/',pWrite);
fputc('/',pWrite);
break;
case EOF:
state=EMD_STATE;
break;
default:
fputc(first,pWrite);
break;
}
}
}
void do_cpp_state(FILE *pRead,FILE *pWrite)
{
int first=0;
first = fgetc(pRead);
switch(first)
{
case '\n':
{
fputc(first,pWrite);
//fputc('/',pWrite);
//fputc('/',pWrite);
state=NUL_STATE;
}
break;
case EOF:
state=EMD_STATE;
break;
default:
fputc(first,pWrite);
break;
}
}
“test.c”#include"CommentConvert.h"
int main()
{
FILE *pRead = NULL;
FILE *pWrite = NULL;
printf("注释转换开始:");
pRead=fopen(INPUTFILENAME,"r");
if(NULL ==pRead)
{
perror("open file for read\n");
exit(EXIT_FAILURE);
}
pWrite=fopen(OUTPUTFILENAME,"w");
if(NULL ==pWrite)
{
fclose(pRead);
perror("open file for write\n");
exit(EXIT_FAILURE);
}
CommentConvert(pRead,pWrite);
printf("注释转换完成:");
return 0;
}
这样就完成了注释转换项目。
c语言注释和代码互换,c语言项目—注释转换(c——c++)相关推荐
- 贪吃蛇的c语言程序码,C语言贪吃蛇代码下载_C语言贪吃蛇代码官方下载-太平洋下载中心...
C语言编写贪吃蛇源代码,简单易懂,文件为VC源代码.如果你正在学习c语言,就来下载吧.很经典的. C语言贪吃蛇代码原理: 产生一个固定大小没有边界的游戏区域,蛇从区域的中心开始,由玩家通过键盘控制蛇的 ...
- vue怎么注释html代码,vue文件中如何注释?
vue文件里是可以写注释的.在每个代码块内,注释的时候,需要使用各自语言的注释语法去注释(HTML.CSS.JavaScript.Jade 等).在文件最顶部注释的时候用HTML的注释语法: . ht ...
- c语言常用的代码,初学C语言常用简单程序代码;
<初学C语言常用简单程序代码;>由会员分享,可在线阅读,更多相关<初学C语言常用简单程序代码;(16页珍藏版)>请在人人文库网上搜索. 1.初学C语言常用简单程序代码素数的筛选 ...
- c语言文件可用代码存放,C语言 文件(示例代码)
小白一个,看到有错误,希望指出,万分感谢 /**************************************************************** C语言文件概述: 一般文件 ...
- c语言地图导航代码大全,C语言实训—电子地图导航系统源代码.docx
C语言实训-电子地图导航系统源代码 /********************************************************************************* ...
- c语言动态图形代码 叮当猫,C语言制作图形马赛克处理技术,网友:这小子不进腾讯可惜了!-Go语言中文社区...
C语言制作图形马赛克处理技术,网友:这小子不进腾讯可惜了! 每个人都有讨厌的人,例如我就比较讨厌三个姓马的人,马云.马化腾和马赛克.马云骗女人的钱,马化腾骗孩子的钱,马赛克阻挡了人们的分享和交流 .那 ...
- 怎么用c语言写情书代码,用C语言写的情书
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include class MY //定义一个"MY"的类 { private: char ti ...
- c语言作业迷宫代码,用c语言实现迷宫求解完美源代码
<用c语言实现迷宫求解完美源代码>由会员分享,可在线阅读,更多相关<用c语言实现迷宫求解完美源代码(7页珍藏版)>请在人人文库网上搜索. 1.include #include ...
- 猴子选王c语言链表程序代码,数据结构(C语言)用栈和链表编写猴子选大王程序...
<数据结构(C语言)用栈和链表编写猴子选大王程序>由会员分享,可在线阅读,更多相关<数据结构(C语言)用栈和链表编写猴子选大王程序(3页珍藏版)>请在人人文库网上搜索. 1.i ...
最新文章
- ELK 5.x日志分析 (二) Elasticserach 5.2 安装
- java表或视图不存在_Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在...
- 国内35所人工智能学院大盘点
- 保护可执行程序的一种方法
- HTML5 CSS选择器总结(强烈推荐)
- linux下怎么监控网络 io swap,监控io性能,free命令,ps命令,查看网络状态,linux下抓包...
- DefenseCode ThunderScan 静态代码审计工具
- Latex 合并pdf文档
- python中pass语句学习
- 看《一人之下:陈朵篇》——架空世界里的真实
- Excel 2010高级应用-面积图(三)
- 宠物商店业务逻辑关系模型图
- 14.嵌入式控制器EC实战 SMBus读取电池信息并控制充放电
- 网站内容采集工具介绍
- Java大牛呕心沥血经历——技术面试与HR谈薪资技巧
- Maya Mental Ray焦散效果
- uCOSIII移植stm32c8t6
- 如何使用IxNetwork软件进行Avnu gPTP一致性测试?
- 微信小程序05---WebSocket的使用
- Linux下运行robot,Robot Framework-Unix和Linux安装