注释转换(将C的注释风格转换为C++的)
来源:互联网 发布:淘宝化妆品店推荐 编辑:程序博客网 时间:2024/06/07 15:21
由于C和C++的转换风格不同,想将注释风格统一为C++的风格,当代码量过多时,手动转换过于繁多。所以就写一个注释转换小项目来实现将C语言的注释转换为C++的注释风格。下面我们先来画一幅图来整理一下思路:
代码实现时使用了3个文件,两个.c文件和一个.h文件。
//convert.h文件
#ifndef _CONVERT_H#define _CONVERT_Henum{NULSTA, //普通代码
CSTA, //C注释CPPSTA, //C++注释EOFSTA //文件结束};void convert();void do_NULSTA(FILE *ipf,FILE *opf);void do_CPPSTA(FILE *ipf,FILE *opf);void do_CSTA(FILE *ipf,FILE *opf);#define INPUT "input.txt"#define OUTPUT "output.txt"#endif
//convert.c文件
#include<stdio.h>#include"convert.h"static int status = NULSTA;void do_NULSTA(FILE *ipf,FILE *opf){int f = fgetc(ipf);switch(f){case '/': //如果第一个字符是/,判断第二个字符{int s = fgetc(ipf);switch(s){case '/':fputc('/',opf);fputc('/',opf);status = CPPSTA;break;case '*':fputc('/',opf);fputc('/',opf);status = CSTA;break;case EOF://如果没有第二个字符,文件结束status = EOFSTA;//跳转到EOFSTA结束break;default:ungetc(s,ipf); //不是注释字符,就退回去。然后跳到普通文本。status = NULSTA;break;}}break;case EOF://文件结束status = EOFSTA;break;default:fputc(f,opf);//不是注释字符,就要输出到目标文件break;}}void do_CPPSTA(FILE *ipf,FILE *opf){int t = fgetc(ipf);switch(t){case '\n':fputc('\n',opf);status = NULSTA;break;case EOF:status = EOFSTA;break;default:fputc(t,opf);break;}}void do_CSTA(FILE *ipf,FILE *opf){int n = fgetc(ipf);switch(n){case '*':{int m = fgetc(ipf);switch(m){case'/':fputc('\n',opf);status = NULSTA;break;case EOF:status = EOFSTA;break;default:ungetc(m,ipf);status = NULSTA;break;}}break;case '\n':fputc('\n',opf);fputc('/',opf);fputc('/',opf);break;case EOF:status = EOFSTA;break;default:fputc(n,opf);break;}} void convert(){FILE *ipf=fopen(INPUT,"r");FILE *opf=fopen(OUTPUT,"w");if(ipf == NULL || opf == NULL){printf("error\n");return;}while(status != EOFSTA)//如果是EOFSTA则结束循环{switch(status){case NULSTA:do_NULSTA(ipf,opf);break;case CPPSTA:do_CPPSTA(ipf,opf);break;case CSTA:do_CSTA(ipf,opf);break;case EOFSTA:break;default:break;}}fclose(ipf);fclose(opf);}
//test.c文件
#include<stdio.h>#include"convert.h"int main(){convert();return 0;}
下面是测试用例:
这两个文件都是在这个项目中创建的。
注意:在头文件中加入#IFNDEF....#ENDEF....是为了防止文件被重复声明而试程序崩溃。
注意:在头文件中加入#IFNDEF....#ENDEF....是为了防止文件被重复声明而试程序崩溃。
阅读全文
0 0
- 注释转换(将C的注释风格转换为C++的)
- 注视转换 将C风格注释转换为C++风格
- 将c风格的注释转换成cpp风格
- 注释转换 (将C注释转换为C++注释)
- 注释转换(将C注释转换为C++注释)
- 注释转换—将C语言注释风格转换为C++注释风格
- 注释转换(C注释风格-C++注释风格)
- C\C++注释风格转换(段注释转换为行注释)
- 注释转换(C注释转换为c++注释)
- 注释转换(c转换为c++)
- C语言项目:注释转换(C风格注释转换成C++风格注释)
- C语言注释转换为c++的注释
- 注释转换(C到C++的注释转换)
- 将C语言注释转换为C++注释
- 将C语言注释转换为c++注释
- c注释向c++注释的转换
- 注释转换(c风格转为c++风格)
- C/C++的注释转换
- C++Primer习题第十一章
- 菜鸟学习历程【15-3】快速排序
- 解决SDL创建的Win32窗体无鼠标双击相应事件
- AES(车贴码查询结果站点)
- 89. Gray Code
- 注释转换(将C的注释风格转换为C++的)
- Bluetooth Low Energy Advertising Bluetooth Low Energy (BLE) conserves power by remaining in sleep m
- 屏幕录像软件oCam v428.0破解方法
- 673[Medium]: Number of Longest Increasing Subsequence
- 控件输入限制总结
- Turtle库快速参考
- 通过PXE远程安装CentOS和Ubuntu系统
- Revit二次开发winform简单的标准模板以及wpf简单的标准模板
- 如何提升编程能力