当日总结

vigoss18在某997工作制的公司上班,终于有一天爆发了,决定要跑路。
既然要跑路了,当然得对自己的代码做点手脚,既要保证走了之后代码仍然可以运行,又要保证走了之后别人维护不了,所以决定写个程序,用来批量把代码中的注释全部删掉。

vigoss18是一个强烈的强迫症患者,他的代码都符合下面这些规则:
1.所有的注释都是//风格的,两个星号中间的内容为注释内容,需要把这个符号和里面的内容全部去掉
2.代码中经常会出现引号,用来表示字符串,如果/
/出现在引号内部,那么就认为不是注释,是不能被去掉的
3.vigoss18的代码保证不会出现//镶套,但是可能会出现/*//和/**//这种情况,对于前者,有两个/,第一个先匹配,第二个/被认为是注释内部的内容;对于后者,第一个/被匹配,第二个/找不到左边匹配的,所以被认为是文本,需要保留下来。
4.代码中可能会出现一半注释符号,比如单独的/
,或者单独的/,这个时候认为不是注释,需要保留下来.
5.注释外的引号,保证一定是合法的,即每个引号一定是有对应的另一个引号成对匹配的。
6.代码中可能会出现引号前面有反斜杠的情况,那么这时引号会被转义,只被认为是个单纯的符号,不起到匹配字符串的效果。
7.代码保证只有引号才有转义的情况发生,即除了引号,其他符号都不需要考虑前面有反斜杠然后被转义。
输入描述:
对于每个输入文件,处理到文件尾。
输入如题意描述,保证单个输入文件不超过5kb
输出描述:
输出去掉注释以后的内容,除了注释以外的内容全部需要输出,卿不要漏掉换行空格之类的。
示例1
输入
复制
a b/
666
2333/c" lihai/le/"/666/"
/

输出
复制
a bc" lihai/le/"/666/"
/#include<stdio.h>
int main()
{
int ch =0,next=0,t=0;
while((ch=getchar())!=EOF)
{
if(ch'\')
{
if((next=getchar())
'"')
{
putchar(ch);
putchar(next);
}
else
{
putchar(ch);
if(next!=EOF)ungetc(next,stdin);
}
}
else if(ch'"')
{
putchar(ch);
while((next=getchar())!=EOF)
{
if (next == '\')
{
putchar('\');
t = getchar();
if (t == EOF) break;
putchar(t);
continue;
}
putchar(next);
if (next == '"') break;
}
}
else if(ch
'/')
{
int next = getchar();
if (next == '
') {
static char buf[60000];
int k = 0, closed = 0;
int x = getchar(), y;

		        while (x != EOF) {
		            if (x == '*') {
		                y = getchar();
		                if (y == '/') { closed = 1; break; }   
		                if (k < (int)sizeof(buf)) buf[k++] = '*';
		                x = y;                                 
		            } else {
		                if (k < (int)sizeof(buf)) buf[k++] = (char)x;
		                x = getchar();
		            }
		        }
		
		        if (!closed) {                  
		            putchar('/');
		            putchar('*');
		            for (int i = 0; i < k; ++i) putchar(buf[i]);
		        }
		    } else {
		        putchar('/');         
		        if (next != EOF) ungetc(next, stdin);
		    }
	}
	else
	{
		putchar(ch);
	}
}
return 0;

}

posted @ 2025-11-19 23:38  lagranSun  阅读(2)  评论(0)    收藏  举报