c语言注释产生代码,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

# include

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值