#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//#include <io.h>
static unsigned int table[7][7];
void InitTable()
{
unsigned int i;
unsigned int j;
memset(table, 0, sizeof(table));
for(i=0; i<7; i++)
{
for(j=0; j<7; j++)
if(i == 4 || i==3)
table[i][j] = 3;
else if(i==6)
table[i][j] = 6;
else
table[i][j] = 0;
}
/* " 1 / 2 * 3 \ 4 \r,\n 6 其他 0*/
table[0][1] = 1;
table[1][1] = 0;
table[0][2] = 2;
table[2][3] = 3; /*删除*/
table[3][3] = 4; /*删除*/
table[4][2] = 0;
table[4][3] = 4;
table[0][4] = 5;
table[5][2] = 0;
table[5][1] = 0;
table[2][2] = 6; /*删除*/
table[6][6] = 0;
}
int DelComments(char* f, int len)
{
//int fsize;
int cnt;
char* buff;
char* p;
FILE *file;
char c;
int start;
int input;
char space;
start = 0;
space = ' ';
cnt = 0;
buff = (char*)malloc(sizeof(char)*1024*1024);
memset(buff, 0, sizeof(sizeof(char)*1024*1024));
p = buff;
file = fopen(f, "r+b");
//fseek(file, 0, SEEK_END);
//fsize = ftell(file);
//fseek(file, 0, SEEK_SET);
if(file == NULL)
{
return -1;
}
InitTable();
while(fread(&c, sizeof(c), 1, file))
{
cnt++;
switch(c)
{
case '"':
input = 1;
break;
case '/':
input = 2 ;
break;
case '*':
input = 3;
break;
case '\\':
input = 4;
break;
case '\r':
case '\n':
input = 6;
break;
default:
input = 0;
break;
}
switch(start)
{
case 3:
if(c=='\r' || c=='\n')
*p++ = c;
else
*p++ = ' ';
break;
case 2:
if(input == 3 || input == 2)
{
p--;
*p++ = ' ';
*p++ = ' ';
break;
}
else
{
*p++ = c;
break;
}
case 4:
*p++ = ' ';
break;
case 6:
if(input == 6)
*p++ = c;
else
*p++ = ' ';
break;
default:
*p++ = c;
break;
}
start = table[start][input];
}
fclose(file);
file = fopen(f, "w+b");
if(!file)
return -1;
fwrite(buff, cnt, 1, file);
fclose(file);
free(buff);
return 0;
}
int main(int argc, char** argv)
{
int fCnt;
int i;
char* p;
char* q;
int len;
char params[MAXPARAMCNT][MAXFILENAMELEN];
if(argc <= 1 || argv == NULL)
{
return -1;
}
fCnt = argc - 1;
memset(params, 0, sizeof(params));
for(i=1; i<argc; i++)
{
DelComments(argv[i], len);
}
return 0;
}
分享到:
相关推荐
批量删除C/C++源代码注释。 内附实现源码。 目前不能支持宏注释。
代码整理小工具,快速清除代码中注释,申请软著必备小工具
比所谓的“C类语言源代码注释去除程序 V1.0 RemoveCNote”好用多了。而且不会太多的删错代码。几乎不用修改,而“C类语言源代码注释去除程序”修改过的代码完全不能使用。 Win8会阻止运行,选择仍然运行即可。用不用...
Qt5编写的移除代码注释源码,Qt5编写的移除代码注释源码,
使用ultraedit批量删除代码中的注释,网上找了许多,没有能直接用的,以前没写过正则表达式,废了九牛二虎的力气,总算是写出来了,呵呵~分享一下!
在最后发布的时候,一次性把代码中的注释全部删除,干净了
本软件主要用于代码保密,即使是被他人获取了无注释源码也难以理解代码...能批量删除代码中的注释,C、C++、汇编语言均支持,自动识别汇编与C,能够批量添加,处理速度快。 软件直接处理目标文件,使用前请做好备份。
不想让非授权者查看软件源代码注释信息或者敏感信息,即使源代码被获取也无法正确理解代码的核心思想。
一个简单的小软件用于C++的代码的注释的删除,界面做的比较难看,大家别介意。
用java编写的代码注释删除小工具,能去文本中掉//和/* */注释。 第一个按钮的功能为去掉文本框1中代码的注释,输出到文本框2. 第二个按钮的功能为批量删除文件中的注释,并输出到当前目录(新文件名为xxx.txt)。但...
一、代码中的注释进行提取并导入到 Excel中 ... 二、将导出的EXCEL注释 再导入代码注释中 (只测试支持excel2007,07以下版本未测试) 三、将文件中的代码注释全部清除 四、支持.net framework 4.0 以上版本
使用Python语言 ,实现批量删除C/C++类型注释
使用python脚本快速删除java文件中的注释
删除VB注释,并且格式化代码
C代码注释删除工具,用Lex生成。可删除C源程序中的/* xxxx */的块或单行注释,及C++风格的单行注释,对于常量字符串中出现的注释不清除。文件包含Lex代码及编译的Linux下的可执行文件。编译及使用见Readme。 C注释的...
清除C#代码中所有注释信息,主要清除格式如下: 1、多行注释 /* ..... */ 2、单行注释 与 // ******** 3、类注释 /// <summary><br>/// 内容 /// </summary><br>4、展开或折叠的代码块...
本程序可以删除c/c++中的注释 并把删除后的程序输出
C/C++代码注释自动删除工具,工程编译之后生成的exe文件,文件执行之后会自动扫描文件所在目录以及子目录中的所有c、cpp、h、inl文件中的注释,并处理注释删除之后造成的空格或者空行,并将原始文件备份成tmp文件。...
最近准备申请个软件证书,提交的代码里面不能有注释。自己写的注释又太多,大概40页,手动删除太繁琐,于是写了个两个labview小工具,来实现自动删除//注释和/*...*/注释和回车。主要使用了状态机的设计模式