C语言注释转c++注释

将c语言的注释转换成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++注释直接读完一行)

// /**/

# 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;
}
时间: 2024-10-20 08:07:19

C语言注释转c++注释的相关文章

注释转换??——C++注释转换为标准C语言注释

编写注释转化程序,实现对一个C/C++语言程序源文件中注释的转换功能 1.C++风格的注释//注释转换为标准C分风格/* */注释 2./* */风格的注释保持原样 3.所有的转换需要符合语法规则 4.注释转换需要支持注释嵌套 注释转化要求: 注释的嵌套情形很多,这里只是举例,你需要遵照C/C++语言的注释规则来编写代码,我不会仅测试这里的例子. 1.单行注释或没有嵌套,注释行直接转换,如: ①//123 /* 123 */ ②/* 123 / / 123 */ 不变 ③/*123 */ 保持原

C语言编程规范--------2 注释

2.1 注释的原则 注释的目的是解释代码的目的.功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息. 示例:如下注释意义不大. /* if receive_flag is TRUE */ if (receive_flag) 而如下的注释则给出了额外有用的信息. /* if mtp receive a message from links */ if (receive_flag) 2.2 说明性文件头部应进行注释 说明性文件(如头文件.h 文件..inc 文件..de

注释转换 ——C注释转换为标准C++注释

http://blog.csdn.net/fujinlong520/article/details/46573445注释转换 --C++注释转换为标准C语言注释 直接上代码: <span style="color:#ff0000;"> #include<stdio.h> #include <errno.h> #include <assert.h> typedef enum STATE { SUCCESS, // 转换成功 FILE_ERR

NET中的规范标准注释(一) -- XML注释标签讲解

一.摘要 .Net允许开发人员在源代码中插入XML注释,这在多人协作开发的时候显得特别有用. C#解析器可以把代码文件中的这些XML标记提取出来,并作进一步的处理为外部文档. 这篇文章将展示如何使用这些XML注释. 在项目开发中,很多人并不乐意写繁杂的文档.但是,开发组长希望代码注释尽可能详细:项目规划人员希望代码设计文档尽可能详尽:测试.检查人员希望功能说明书尽可能详细等等.如果这些文档都被要求写的话,保持它们同步比进行一个战役还痛苦. 为何不把这些信息保存在一个地方呢??最明显想到的地方就是

文档注释与普通注释

文档注释/**......*/ 注释若干行,并写入javadoc文档.每个文档注释都会被置于注释定界符 注释文档将用来生成HTML格式的代码报告,所以注释文档必须书写在类.域.构造函数.方法,以及字段(field)定义之前.注释文档由两部分组成——描述.块标记. /*......*/注释若干行,通常用于提供文件.方法.数据结构等的意义与用途的说明,或者算法的描述.一般位于一个文件或者一个方法的前面,起到引导的作用,也可以根据需要放在合适的位置. 文档注释与普通注释,布布扣,bubuko.com

vim的批量注释与删除注释

vim的批量注释与删除注释 方法一:块选择模式 批量注释: Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的I进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,Vim会自动将你选中的所有行首都加上注释. 如图: 取消注释: Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意// 要选中两个,选好之后按d即可删除注释. 如图: 方法二 替换命令 批量注释: 使用下面命令在指定的行首添加注释: :起始行号,结束行号s/^/注释符/g 取消注释:

C++注释和doxygen注释

C++注释 C++的注释只有两种: 单行注释,以“//”开头: 段落注释,以“/*”开始,以“*/”结束. int value; // value是一个整型变量,这是一句单行注释 /* Test是一个测试用的类 这是一段注释中的一行 这是一段注释中的另一行 */ class Test { }; doxygen注释:记住下面3点语法规则就够了 参照上文C++注释的分类方式,doxygen注释可以这样划分: 前置单行注释,以“///”开头: 后置单行注释,以“///<”开头,紧跟代码后面: 段落注释

【Linux】Vim编辑器-批量注释与反注释

[-] vim编辑器---批量注释与反注释 方法一 块选择模式 插入注释 取消注释 方法二 替换命令 批量注释 取消注释 实例演示 vim编辑器---批量注释与反注释 在使用vim编写代码的时候,经常需要用到批量注释与反注释一段代码.下面简要介绍其操作. 方法一 块选择模式 插入注释: 用v进入virtual模式 用上下键选中需要注释的行数 按Control+v(win下面ctrl+q)进入列模式 按大些“I”进入插入模式,输入注释符“#”或者是"//",然后立刻按下ESC(两下) 取

ORACLE中给表、列增加注释以及读取注释

在ORACLE中给表.列增加注释以及读取注释 1.给表填加注释:SQL>comment on table 表名 is '表注释"; 2.给列加注释:SQL>comment on column 表.列 is '列注释'; 3.读取表注释:SQL>select * from user_tab_comments where comments is not null; 4.读取列注释:SQL>select * from user_col_commnents where comme

使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 bean 将会被装配来消除混乱

1.当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的某一个进行装配,在这种情况下,你可以使用 @Qualifier 注释和 @Autowired 注释来精确配置. 2.示例 java public class Student { private Integer age; private String name; public void setAge(Integer age) { this.age = age; } public Integer getAge() { re