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

#pragma once

#pragma warning (disable:4996)

typedef enum ConvertState

{

SUCCESS,//转换成功

FILE_ERROR,//打开文件失败

NO_MATCH,//转换失败

} ConvertState;

//转换的状态

typedef enum State

{

C_BEGIN,//C语言注释开始

C_END,//C语言注释结束

CPP_BEGIN,//C++注释开始

CPP_END,//C++注释结束

}State;

ConvertState Convert(FILE *fin, FILE *fout)

{

ConvertState  ret = SUCCESS;

char first, second;

State tag = C_END;

assert(fin);

assert(fout);

do{

first = fgetc(fin);

switch (first)

{

case '/':

second = fgetc(fin);

if (second == '*')

{

//3/匹配问题

if (tag == C_END)

{

fputc('/',fout);

fputc('/',fout);

tag = C_BEGIN;

}

else

{

fputc('/', fout);

fputc('*', fout);

}

}

else if (second == '/')

{

char next;

fputc('/', fout);

fputc('/', fout);

do{

next = fgetc(fin);

fputc(next, fout);

if (next == EOF)

return ret;

} while (next != '\n');

}

else

{

fputc(first, fout);

fputc(second, fout);

}

break;

case '\n':

//4.多行注释问题

fputc('\n', fout);

if (tag == C_BEGIN)

{

fputc('/', fout);

fputc('/', fout);

}

break;

case '*':

second = fgetc(fin);

if (second == '/')

{

//2.换行问题

char next = fgetc(fin);

//5.连续注释问题

if (next == '/')

{

fputc('/n', fout);

fseek(fin, -1, SEEK_CUR);

}

else if (next != '\n'&&next != EOF)

{

fputc('\n', fout);

fputc(next, fout);

}

else

{

fputc('/n', fout);

}

tag = C_END;

}

else if (second == '*')

{

fputc(first, fout);

fseek(fin, -1, SEEK_CUR);

}

else

{

fputc(first, fout);

fputc(second, fout);

}

break;

default:

if (first != EOF)

{

fputc(first, fout);

}

break;

}

} while (first != EOF);

if (tag != C_END)

{

ret = NO_MATCH;

}

return ret;

}

ConvertState AnnotationConvert(const char*inputfile, const char* outputfile)

{

ConvertState ret;

FILE* fout, *fin;

fin = fopen(inputfile, "r");

if (fin == NULL)

{

printf("打开文件%s失败,errno:%d\n", inputfile, errno);

return FILE_ERROR;

}

fout = fopen(outputfile, "w");

if (fout == NULL)

{

fclose(fin);

printf("打开文件%s失败,errno:%d\n", outputfile, errno);

return FILE_ERROR;

}

ret = Convert(fin, fout);

fclose(fin);

fclose(fout);

return ret;

};

void test()

{

char *inputfile = "C";

char *outputfile = "C++";

ConvertState flag=AnnotationConvert(inputfile, outputfile);

if (flag == SUCCESS)

{

printf("转换成功,请查看");

}

else if (flag == FILE_ERROR)

{

printf("打开文件失败");

}

else

{

printf("转换失败=_=||");

}

}

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

#include

#include"AnnotationConvert.h"

int main()

{

test();

system("pause");

return 0;

}

运行结果:

c语言注释换颜色,C语言实现注释转换相关推荐

  1. R 语言ggplot 换颜色-发文章用的sci 色卡

    那当然就是ggsci 包啦 包含多种选择,先上图: Nature Publishing Group Journal of Clinical Oncology 还有很多选择,只要在ggplot2 基础上 ...

  2. c语言表白代码颜色,C语言告白代码,一闪一闪亮晶晶~

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #define I 20 #define R 340 int main() { int i,j,e; ...

  3. C语言怎么改变窗口颜色,C语言运行窗口颜色.doc

    C语言运行窗口颜色 C语言运行窗口颜色 #include #include int main(void) { int i,j; printf("背景颜色:0:黑.1:蓝.2:绿.3:湖蓝色. ...

  4. 可以用c语言改笔记本键盘灯,笔记本背光键盘有必要吗怎么换颜色

    现如今在笔记本电脑市场当中也配备了相当酷炫的背光键盘,有的朋友在看到了之后会说笔记本电脑的背光键盘有必要吗?在这里告诉大家,其实笔记本电脑的背光键盘也是有必要的,因为它可以让我们在夜晚的时候更好的看清 ...

  5. 编译c语言程序时 程序中的注释部分将,C语言程序编译时,程序中的注释部分将 答案:不参加编译,也不会出现在目标程序中...

    相关问题 在普通视图中,需打开"插入"菜单,单击"脚注"或"尾注",打开一注释内容编辑区, 才能查看和编辑注释内容: 视图 中 菜单 脚注 ...

  6. python语言中的注释符_各种语言中的注释符总结

    各种语言中的注释符 c语言 /* 注释内容*/ // 注释内容 Pascal: { 注释内容} Vb: Rem 注释内容 '注释内容 Vbscript: '注释内容 rem 注释内容 Javascri ...

  7. C语言第三节关键字、标识符、注释

    学习语法之前的提醒 C语言属于一门高级语言,其实,所有高级语言的基本语法组成部分都是一样的,只是表现形式不太一样 就好像亚洲人和非洲人,大家都有人类的结构:2只 手.2只脚.1个头,只是他们外表不太一 ...

  8. Dev++ 环境设置C语言关键字显示颜色

    Dev++ 环境下设置C语言关键字显示颜色或高亮显示 在默认的状态下,c语言关键字的颜色是黑色的,在写程序时不好区分关键字和变量,所以设置一下颜色会好看点. 1.点击工具->编辑器选项 2.选择 ...

  9. c语言注释两种,C语言有几种注释方式

    C语言有两种注释方式,一种是以/*开始,以*/结束的块注释:另一种是以//开始,以换行符结束的单行注释.具体使用方法如:[const double pi = 3.1415926536; // pi是- ...

最新文章

  1. 基于OpenCV的条形码检测
  2. 生物系统和疾病的多组学数据整合考虑和研究设计
  3. Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)
  4. 侠客X开发工作已经持续了2个月左右了。
  5. 2013年全球ERP市场格局(Gartner)
  6. 设计模式-中介者模式(21)
  7. 【java笔记】hello world入门程序
  8. 2.4.PHP7.1 狐教程-【PHP常量】
  9. 百度手机输入法中的五笔9键盘有问题?
  10. 零食店投资?市场成本风险分析
  11. C++虚函数指针虚函数表
  12. linux的cd命名返回上级目录,返回根目录
  13. AT91SAM7SE应用 -- UART
  14. ccf 节日 java 思路
  15. MSTAR数据集处理
  16. 外星人入侵游戏python学习心得——创建第一个外星人在左上角
  17. 聊聊NIPT基因检测技术
  18. 感恩节,感谢大家的一路相伴
  19. Html5 Egret游戏开发 成语大挑战(二)干净的eui项目和资源准备
  20. 从零开始学习信号完整性--7-SI分析仿真

热门文章

  1. HTML head 头标签
  2. Multimedia (MP3, MPEG-4, AVI, DiVX, etc.) support in Ubuntu 12.04 (Precise)
  3. 免费wordpress主题在线生成网站
  4. 在网页中嵌入任意字体的解决方案 (insert any font)
  5. 最短路径——Floyd算法及优化(蓝桥杯试题集)
  6. C++——构建单链表的方法
  7. 多存多取问题 java
  8. private关键字 java 1613808402
  9. 测试markdown的发布
  10. 演练 创建数据库MySchool 1007 sqlserver