注释转换
2016-04-03 11:40
316 查看
将c语言的注释转换成c++的注释
测试用例:
1.一般情况
2.连续*
3.换行问题
4.匹配问题
5.多行注释
6.连续注释
7.c++注释 (遇到c++注释直接读完一行)
Annotation conversion.c
测试用例:
1.一般情况
/* int a = 0; */
2.连续*
/***/
3.换行问题
/* int b = 0; */ int c = 0; /* aaa */ int d = 0;
4.匹配问题
/*AAA/*BBB*/ /*int e = 0;/*xxxxxx*/
5.多行注释
/* AAA BBB CCC */int aa;
6.连续注释
/*aaa*//*bbb*/
7.c++注释 (遇到c++注释直接读完一行)
// /**/
Annotation conversion.c
# include<stdio.h> # include<stdlib.h> enum Tag { C_BEGIN, C_END, }; void Convert(const char* fIn,char* fOut) { FILE* Input = fopen(fIn, "r"); if (NULL == Input) { printf("打开文件%s失败\n",fIn); return; } FILE* Output = fopen(fOut, "w"); if (NULL == Input) { printf("打开文件%s失败\n", fOut); return; } Tag tag = C_END; char ch = fgetc(Input); char second; while (ch != EOF) { switch (ch) { case '/': fputc('/', Output); second = fgetc(Input); if (second == '*') { //4.匹配问题 if (tag == C_END) { fputc('/', Output); tag = C_BEGIN; } else { fputc('*', Output); } } else if (second == '/') // 7. 碰到c++注释,读完一行 { fputc(second, Output); char cur; do { cur = fgetc(Input); if (cur == EOF) { return; } fputc(cur, Output); } while (cur != '\n'); } else { fputc(second, Output); } break; case '*': second = fgetc(Input); if (second == '/' && tag == C_BEGIN) { // 3. 换行问题 char next = fgetc(Input); if (next != '\n' && next != EOF) { fputc('\n', Output); fseek(Input, -1, SEEK_CUR); //6.连续注释 /**//**/ } else { fputc(next, Output); } tag = C_END; } else // 2. /***/ { fputc('*', Output); fseek(Input, -1, SEEK_CUR); } break; case '\n': fputc('\n', Output); // 5. 多行注释 if (tag == C_BEGIN) { fputc('/', Output); fputc('/', Output); } break; default: fputc(ch, Output); } ch = fgetc(Input); } fclose(Input); fclose(Output); } void Test() { Convert("Input.cpp","Output.cpp"); } int main() { Test(); system("pause"); return 0; }
相关文章推荐
- Java多线程使用场景
- 浅谈团队贡献分如何分配
- GDOI'2016市选day2 —— 解密(code)
- 算法经典文章收藏
- phpcms v9 前台无限制GETSHELL
- CSU 1718(脑洞)
- asp.net MVC控制器返回json问题总结
- hdu 1312 Red and Black (dfs+bfs)
- 云服务器搭建
- NUOJ 88
- 图的遍历和二维矩阵动态分配内存
- 内存级分析,基本数据类型,引用数据类型 比较是否相等
- 排序算法综述
- cocos2d-JS 第三炮Helloworld及Cocos Creater简介(宝贵的经验!)
- 使用hover为div添加边框时,页面布局发生错位的解决办法
- MKMapView的内存释放问题
- 第六周总结
- Android中Intent传递自定义对象类型的数据
- 图的矩阵与邻接矩阵转换和遍历
- iOS-Webview及正则表达式