项目实战一(注释转换)
来源:互联网 发布:东方证券行情软件 编辑:程序博客网 时间:2024/06/06 05:51
项目一(注释转换)
解释说明:
本项目用来将一个.c或.cpp文件中的才语言注释全部更换成C++注释风格
@1单行注释转换 /*int a=0;*/
—>//int a=0;
@2代码块注释转换
/*int a=0;int b=0;,,,*/
转换后
//int a=0;//int b=0;//,,,
\@3c语言类型注释类型大全
int a = 10;// 1.一般情况int num = 0;/* int i = 0; */// 2.换行问题/* int i = 0; */int j = 0;/* int i = 0; */int j = 0;// 3.匹配问题/*int i = 0;/*xxxxx*/// 4.多行注释问题/*int i=0;int j = 0;int k = 0;*/int k = 0;// 5.连续注释问题/*int a=0;*//*int b=0;*/// 6.连续的**/问题/***/// 7.C++注释问题// /*xxxxxxxxxxxx*/
转换后
int a = 10;// 1.一般情况int num = 0;// int i = 0; */// 2.换行问题// int i = 0; */int j = 0;// int i = 0; */int j = 0;// 3.匹配问题//int i = 0;/*xxxxx*/// 4.多行注释问题////int i=0;//int j = 0;//int k = 0;//*/int k = 0;// 5.连续注释问题//int a=0;*///int b=0;*/// 6.连续的**/问题//**/// 7.C++注释问题// /*xxxxxxxxxxxx*/
代码如下
#include<stdio.h>#include<stdlib.h>enum Status{ LLL, NUL_STATUS, C_STATUS, CPP_STATUS, END_STATUS};//处理正常代码void DoNulStatus(FILE* pfIn, FILE* pfOut, enum Status* status){ int frist = 0; int secont = 0; //frist = fgetc(pfIn); while (*status == NUL_STATUS) { frist = fgetc(pfIn); switch (frist) { case '/': secont = fgetc(pfIn); switch (secont) { case '/': fputc(frist, pfOut); fputc(secont, pfOut); *status = CPP_STATUS; break; case '*': fputc('/',pfOut); fputc('/', pfOut); *status = C_STATUS; break; default: fputc(frist, pfOut); break; } break; case EOF: *status = END_STATUS; break; default: fputc(frist, pfOut); break; } }}//处理c语言注释代码void DoCStatus(FILE* pfIn, FILE* pfOut, enum Status* status){ int frist = 0; int secont = 0; int third = 0; while (*status == C_STATUS) { frist = fgetc(pfIn); switch (frist) {loop: case '*': secont = getc(pfIn); switch (secont) { case '/': third = getc(pfIn); //fputc(frist, pfOut); //fputc(secont, pfOut); if (third == '\n') { fputc(frist, pfOut); fputc(secont, pfOut); fputc(third, pfOut); //*status = NUL_STATUS; //break; } ////else if (third=='/') else { fputc(frist, pfOut); fputc(secont, pfOut); fputc('\n', pfOut); ungetc(third,pfIn); } //fputc(third, pfOut); *status = NUL_STATUS; break; case '*': fputc(frist, pfOut); frist = secont; //secont = 0; goto loop; break; default: fputc(frist, pfOut); fputc(secont, pfOut); break; } break; case EOF: *status = END_STATUS; break; case '\n'://ungetc(); fputc(frist, pfOut); fputc('/', pfOut); fputc('/', pfOut); break; default: fputc(frist, pfOut); break; } }}//处理c++型注释代码void DoCppStatus(FILE* pfIn, FILE* pfOut, enum Status* status){ int frist = 0; int secont = 0; while (*status == CPP_STATUS) { frist = fgetc(pfIn); switch (frist) { case '\n': fputc(frist, pfOut); *status = NUL_STATUS; break; case EOF: *status = END_STATUS; break; default: fputc(frist, pfOut); break; } }}//代码调用部分void DoConvertWork(FILE* pfIn, FILE* pfOut){ enum Status s; s = NUL_STATUS; while(s) { switch (s) { case NUL_STATUS: DoNulStatus(pfIn, pfOut, &s); break; case C_STATUS: DoCStatus(pfIn, pfOut, &s); break; case CPP_STATUS: DoCppStatus(pfIn, pfOut, &s); break; case END_STATUS: break; default: break; } }}int main(void){ FILE *pfIn=NULL, *pfOut=NULL; pfIn = fopen("input.txt","r"); if (pfIn == NULL) { perror("open input file error"); exit(1); } pfOut = fopen("output.txt","w"); if (pfOut == NULL) { perror("open output file error"); exit(1); } DoConvertWork(pfIn, pfOut); fclose(pfIn); fclose(pfOut); system("pause"); return 0;}
阅读全文
0 0
- 项目实战一(注释转换)
- 注释转换项目(c->c++)
- 注释转换(C++小项目)
- 注释转换——(小项目)
- 注释转换(c->c++)小项目
- 注释转换项目
- 小项目 | 注释转换
- 注释转换项目
- 项目【注释转换】
- 注释转换项目
- 实战项目分析(一)
- vueJs项目实战(一)
- SSH项目实战(一)
- C语言小项目—注释转换( C注释转换为C++注释 )
- C语言项目:注释转换(C风格注释转换成C++风格注释)
- 【C项目】注释转换项目
- Kotlin实战一:项目配置和语言转换
- 注释转换小项目(c注释->到c++注释)
- SVM
- APK程序的运行过程
- zookeeper ZAB 原子消息广播
- 数据结构-栈的顺序存储和链式存储
- VS下动态库dll的显式调用(动态调用)
- 项目实战一(注释转换)
- 读取AI Challenger比赛人体骨骼关键点Json数据和场景分类Json数据
- “悉尼儿童生活”摄影比赛开幕 童眼看世界
- EasyUI-datagrid-自动合并单元格
- tasks:获取日志输出时间并进行排序
- 最大公约数,最小公倍数
- 【备忘】2017年最新整理神经网络深度学习算法全套视频教程
- Mysql学习整理(二)
- android 7.0 因为file://引起的FileUriExposedException异常