///
 /// 针对 java程序 同样是可以的 
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;

char fsm[8][128];

void initfsm()

{

 const int line_len=sizeof(char)*128;
 memset(fsm[0],0,line_len);
 memset(fsm[1],0,line_len);
 memset(fsm[2],2,line_len);
 memset(fsm[3],3,line_len);
 memset(fsm[4],3,line_len);
 memset(fsm[5],5,line_len);
 memset(fsm[6],5,line_len);
 memset(fsm[7],0,line_len);
 fsm[0]['/']=1;
 fsm[0]['"']=5;
 fsm[1]['/']=2;
 fsm[1]['*']=3;
 fsm[1]['"']=5;
 fsm[2]['\n']=7;
 fsm[3]['*']=4;
 fsm[4]['/']=7;
 fsm[4]['*']=4;
 fsm[5]['"']=0;
 fsm[5]['\\']=6;
 fsm[7]['/']=1;
 fsm[7]['"']=5;

}
int main()
{
	cout<<"              这是一个C++状态机 处理注释的程序"<<endl;
	cout<<"              准备好需要删除注释的文件 in.txt   将输出 out.txt "<<endl;
	cout<<"             程序将改写为指定路径 指定文件夹下操作"<<endl;
	cout<<"             准备好后 输入常用键即可运行"<<endl;
	int cinx;
 int state=0;
 char c;
  string s;
  cin>>cinx;
 FILE *fin=fopen("in.txt","r");
 FILE *fout=fopen("out.txt","w");
 initfsm();
 while(fscanf(fin,"%c",&c)!=EOF)
 {
state=fsm[state][c];
s+=c;
switch(state)
{
case 0:
fprintf(fout,"%s",s.c_str());
s="";
break;
case 7:
s="";
if(c=='\n')
{
fputc(c,fout);
}
break;
}
 }
 fclose(fin);
 fclose(fout);
 return 0; 
}