博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
注释转换器
阅读量:2242 次
发布时间:2019-05-09

本文共 4023 字,大约阅读时间需要 13 分钟。

注释转换


简介

将C++注释转换成C语言注释

代码块

input.c C++的注释风格

int num = 0; /*int i = 0;*/ /*int i = 0;*/int j = 0; /*int i = 0;*/ int j = 0; /*int i = 0;/*123456*/ /* asdas asdasd asdasd sadasd */int k = 0; /*dsfsd*//*gdfg*/ /***/ // /*xxxxxxxxxxx*/

output.c C的注释风格

int num = 0; //int i = 0; //int i = 0; int j = 0; //int i = 0; int j = 0; //int i = 0;/*123456 // //asdas //asdasd //asdasd //sadasd // int k = 0; //dsfsd //gdfg //* // /*xxxxxxxxxxx*/

convert.h

#ifndef    __COMMENT_CONVERT_H__ #define    __COMMENT_CONVERT_H__ #include 
#include
#include
enum STATE {
NUL_STATE, C_STATE, CPP_STATE, END_STATE, }; void DoConvertWork(FILE* pfIn,FILE* pfOut); void DoNulState(FILE* pfIn,FILE* pfOut); void DoCState(FILE* pfIn,FILE* pfOut); void DoCppState(FILE* pfIn,FILE* pfOut); #endif // __COMMENT_CONVERT_H__

convert.c

#include "convert.h" #include 
enum STATE state = NUL_STATE; void DoConvertWork(FILE* pfIn, FILE* pfOut) {
while (state != END_STATE) {
switch (state) {
case NUL_STATE: DoNulState(pfIn, pfOut); break; case C_STATE: DoCState(pfIn, pfOut); break; case CPP_STATE: DoCppState(pfIn, pfOut); break; default : break; } } } void DoNulState(FILE* pfIn,FILE* pfOut) {
int first = fgetc( pfIn ); int second = 0; switch (first) {
case EOF: {
state = END_STATE; break; } case '/': {
fputc(first, pfOut); second = fgetc(pfIn); if ('*' == second){
fputc('/',pfOut); state = C_STATE; } else if ('/' == second){
fputc(second, pfOut); state = CPP_STATE; } } break; default: fputc(first, pfOut); break; } } void DoCState(FILE* pfIn,FILE* pfOut) {
int first = fgetc(pfIn); switch (first) {
case'*': {
int second = fgetc(pfIn); if('/' != second) {
fputc(first, pfOut); ungetc(second, pfIn); //state = C_STATE; } else if('/' == second) {
int third = fgetc(pfIn); if ('\n' != third){
fputc('\n', pfOut); ungetc(third, pfIn); } else if('\n' == third){
fputc('\n', pfOut); } state = NUL_STATE; } } break; case '\n': {
fputc('\n', pfOut); fputc('/', pfOut); fputc('/', pfOut); } break; case '/': fputc(first, pfOut); {
int second = fgetc(pfIn); if ('*' == second){
fputc(second,pfOut); } } break; default: fputc(first, pfOut); break; } } void DoCppState(FILE* pfIn,FILE* pfOut) {
int first = fgetc(pfIn); switch (first) {
case EOF: state = END_STATE; break; case '\n': state = NUL_STATE; fputc(first, pfOut); break; default: fputc(first, pfOut); break; } }

test.c

#include "convert.h" #include 
void test() {
FILE* pfIn = fopen("input.c", "r"); FILE* pfOut = fopen("output.c", "w+"); if (NULL == pfIn){
perror("input open error"); exit( EXIT_FAILURE ); } if (NULL == pfOut) {
fclose(pfIn); perror("output open error"); exit( EXIT_FAILURE ); } DoConvertWork(pfIn, pfOut); fclose(pfIn); fclose(pfOut); } int main() {
test(); system("pause"); return 0; }

还未更新完

转载地址:http://hvgbb.baihongyu.com/

你可能感兴趣的文章
值传递和引用传递
查看>>
什么情况下用+运算符进行字符串连接比调用StringBuilder对象的append方法连接字符串性能更好?
查看>>
怎么根据Comparable方法中的compareTo方法的返回值的正负 判断升序 还是 降序?
查看>>
理解事务的4种隔离级别
查看>>
常用正则匹配符号
查看>>
建议42: 让工具类不可实例化
查看>>
Java 异步机制与同步机制的区别
查看>>
hibernate的对象三种状态说明
查看>>
什么是N+1查询?
查看>>
Spring 接管 Hibernate 配置 延迟加载
查看>>
找出不在预定数组中的自然数
查看>>
String常见面试题
查看>>
直插,快排,堆排,归并排序的分析
查看>>
二叉树的各种操作(面试必备)
查看>>
oracle
查看>>
泛型与通配符详解
查看>>
BaseServiceImpl中的实现关键点
查看>>
Struts2中的session、request、respsonse获取方法
查看>>
如何理解MVC模型
查看>>
SpringMVC中乱码解决方案
查看>>