/// /// 针对 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; }
小代码 小软件
精选 转载上一篇:小软件
下一篇:linux +SQL 安装
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章