`
lc7cl
  • 浏览: 40833 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

删除代码中的注释

    博客分类:
  • C
c 
阅读更多

 

 

#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;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics