设为首页 加入收藏

TOP

注释转换(c转换为c++)
2015-07-16 12:04:23 来源: 作者: 【 】 浏览:189
Tags:注释 转换

//input.c中要处理的情况如下

input.c



/*int i = 0;*/
/*int y = 0;*/int j = 0;
/*int x = 0;/*12345678*/
/*
int h = 0;
int g = 0;
int j = 0;
*/int q = 0;
/**//**/
/* ****** */

// /*1234567890*/

源文件Annotationconvert.c

?

?

#include
   
     #include
    
      #include
     
       #pragma warning(disable:4996) typedef enum STATE { FILE_ERROR, //文件错误 FILE_SUCCESS, //文件成功 other_error, //其他错误 NO_MATCH, //文件不匹配 }STA; typedef enum tag { tag_begin, //注释中 tag_end, //不在注释中 }TAG; STA AnnotationConvert(FILE* infile, FILE* outfile) { char firstch, secondch; int next; assert(infile); assert(outfile); TAG a = tag_end; do{ firstch = fgetc(infile); switch (firstch) { case'/': secondch = fgetc(infile); if (secondch == '*' && a == tag_end) { fputc('/', outfile); fputc('/', outfile); a = tag_begin; } else if (secondch == '/') { fputc(firstch, outfile); fputc(secondch, outfile); next = fgetc(infile); while (next != EOF && next != ' ') { fputc(next, outfile); next = fgetc(infile); } a = tag_end; } else { fputc(firstch, outfile); fputc(secondch, outfile); } break; case'*': secondch = fgetc(infile); if (secondch == '/') { fputc(' ', outfile); a = tag_end; } else if (secondch == '*') { fputc(firstch, outfile); fseek(infile, -1, SEEK_CUR); } else { fputc(firstch, outfile); fputc(secondch, outfile); } break; case' ': if (a == tag_begin) { fputc(firstch, outfile); fputc('/', outfile); fputc('/', outfile); } else { fputc(firstch, outfile); } break; default: fputc(firstch, outfile); break; } } while (firstch != EOF); if (a == tag_end) { return FILE_SUCCESS; } else { return NO_MATCH; } return 0; } STA StartConvert() { STA s; const char* infileName = input.c; const char* outfileName = output.c; FILE* infile = fopen(infileName, r); FILE* outfile = fopen(outfileName, w); if (infile == NULL) { return FILE_ERROR; } if (outfile == NULL) { fclose(infile); return FILE_ERROR; } s = AnnotationConvert(infile, outfile); fclose(infile); fclose(outfile); return s; } int main() { STA ret = StartConvert(); if (ret == FILE_ERROR) { printf(文件错误:%d , errno); } else if (ret == FILE_SUCCESS) { printf(转换成功 ); } else if (other_error) { printf(其他错误:%d , errno); } else { printf(不匹配 ); } return 0; }
     
    
   
output.c中结果应如下:

?

?

//int i = 0;


//int y = 0;
int j = 0;
//int x = 0;/*12345678


//
//int h = 0;
//int g = 0;
//int j = 0;
//
int q = 0;
//
//


// ******


// /*1234567890*/

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇[学习笔记―Objective-C]《Objec.. 下一篇Objective-C 内存管理之 _ARC

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: