实现去除c语言注释的小工具
实现去除c语言注释的小工具
发布时间:2016-12-28 来源:查字典编辑
摘要:去除C代码中的注释,1.单行注释//;2.多行注释/**/;3.单行注释以“”结尾则下一行也为注释;4.字符串中的注释不处理。说是C语言,但...

去除C代码中的注释,

1. 单行注释//;

2. 多行注释/**/;

3. 单行注释以“”结尾则下一行也为注释;

4. 字符串中的注释不处理。

说是C语言,但其实所有C语系的都可以,比如Java。

小工具:去除C语言注释

复制代码 代码如下:

#include <stdio.h>

int main(int argc, char* argv[]) {

enum {

literal,

single,

multiple,

string

} mode = literal;

char last = 0, current;

while ((current = getchar()) != EOF) {

switch (mode) {

case single: {

if (last != '' && (current == 'n' || current == 'r')) {

putchar(current);

current = 0;

mode = literal;

}

} break;

case multiple: {

if (last == '*' && current == '/') {

current = 0;

mode = literal;

}

} break;

case string: {

if (last == '') {

putchar(last);

putchar(current);

} else if (current != '') {

putchar(current);

if (current == '"') {

mode = literal;

}

}

} break;

default: {

if (last == '/') {

if (current == '/') {

mode = single;

} else if (current == '*') {

mode = multiple;

} else {

putchar(last);

putchar(current);

}

} else if (current != '/') {

putchar(current);

if (current == '"') {

mode = string;

}

}

} break;

}

last = current;

}

return 0;

}

测试代码

复制代码 代码如下:

#include <stdlib.h>

#include <stdio.h>

int main (int argc, char *argv[])

{

// not show

not show

not show

// not show

/* not show */

int is; // not show

int/* not show */ ms; /* not show */

double ds; // not show

not show

not show

double dm; /* ...

not show

not show */ float fs; /**

* now show

*/

float/**/ fm;

char cs[] = "aaa // /***/";

char cm1[] = /* not show */"hello*/";

char cm2[] = "/*redraiment"/* not show */;

/* printf("/////"); */

return EXIT_SUCCESS;

}

处理后的代码

复制代码 代码如下:

#include <stdlib.h>

#include <stdio.h>

int main (int argc, char *argv[])

{

int is;

int ms;

double ds;

double dm; float fs;

float fm;

char cs[] = "aaa // /***/";

char cm1[] = "hello*/";

char cm2[] = "/*redraiment";

return EXIT_SUCCESS;

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C语言学习
热门C语言学习
编程开发子分类