将C语言注释转换成C++注释


#pragmaonce#pragmawarning(disable:4996)typedefenumConvertState{SUCCESS,//转换成功FILE_ERROR,//打开文件失败NO_MATCH,//转换失败}ConvertState;//转换的状态typedefenumState{C_BEGIN,//C语言注释开始C_END,//C语言注释结束CPP_BEGIN,//C++注释开始CPP_END,//C++注释结束}State;ConvertStateConvert(FILE*fin,FILE*fout){ConvertStateret=SUCCESS;charfirst,second;Statetag=C_END;assert(fin);assert(fout);do{first=fgetc(fin);switch(first){case'/':second=fgetc(fin);if(second=='*'){//3/匹配问题if(tag==C_END){fputc('/',fout);fputc('/',fout);tag=C_BEGIN;}else{fputc('/',fout);fputc('*',fout);}}elseif(second=='/'){charnext;fputc('/',fout);fputc('/',fout);do{next=fgetc(fin);fputc(next,fout);if(next==EOF)returnret;}while(next!='\n');}else{fputc(first,fout);fputc(second,fout);}break;case'\n'://4.多行注释问题fputc('\n',fout);if(tag==C_BEGIN){fputc('/',fout);fputc('/',fout);}break;case'*':second=fgetc(fin);if(second=='/'){//2.换行问题charnext=fgetc(fin);//5.连续注释问题if(next=='/'){fputc('/n',fout);fseek(fin,-1,SEEK_CUR);}elseif(next!='\n'&&next!=EOF){fputc('\n',fout);fputc(next,fout);}else{fputc('/n',fout);}tag=C_END;}elseif(second=='*'){fputc(first,fout);fseek(fin,-1,SEEK_CUR);}else{fputc(first,fout);fputc(second,fout);}break;default:if(first!=EOF){fputc(first,fout);}break;}}while(first!=EOF);if(tag!=C_END){ret=NO_MATCH;}returnret;}ConvertStateAnnotationConvert(constchar*inputfile,constchar*outputfile){ConvertStateret;FILE*fout,*fin;fin=fopen(inputfile,"r");if(fin==NULL){printf("打开文件%s失败,errno:%d\n",inputfile,errno);returnFILE_ERROR;}fout=fopen(outputfile,"w");if(fout==NULL){fclose(fin);printf("打开文件%s失败,errno:%d\n",outputfile,errno);returnFILE_ERROR;}ret=Convert(fin,fout);fclose(fin);fclose(fout);returnret;};voidtest(){char*inputfile="C";char*outputfile="C++";ConvertStateflag=AnnotationConvert(inputfile,outputfile);if(flag==SUCCESS){printf("转换成功,请查看");}elseif(flag==FILE_ERROR){printf("打开文件失败");}else{printf("转换失败=_=||");}}#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<errno.h>#include"AnnotationConvert.h"intmain(){test();system("pause");return0;}

运行结果: