首页 > 代码库 > 凝视转换(部分)
凝视转换(部分)
#include <stdio.h> #include <errno.h> #include <assert.h> typedef enum STATE { SUCCESS, // 成功 FILE_ERROE, // 文件错误 NO_MATCH, // 不匹配 OTHER, // 其它错误 }STATE; typedef enum TAG { TAG_BEGIN, // 在C凝视段中 TAG_END, // C凝视结束 }TAG; #pragma warning(disable:4996) STATE AnnotationConvert(FILE* inFile, FILE* outFile) { TAG tag = TAG_END; char firstCh, secondCh; assert(inFile); assert(outFile); do{ firstCh = fgetc(inFile); switch (firstCh){ case '/': secondCh = fgetc(inFile); if (secondCh == '*'&& tag == TAG_END) { fputc('/', outFile); fputc('/', outFile); tag = TAG_BEGIN; } else { fputc(firstCh, outFile); fputc(secondCh, outFile); if (secondCh == '/') { char next = fgetc(inFile); while ((next != '\n')&&(next!=EOF)) { next = fgetc(inFile); fputc(next, outFile); } } } break; case '\n': fputc('\n', outFile); if (tag == TAG_BEGIN) { fputc('/', outFile); fputc('/', outFile); } break; case '*': secondCh = fgetc(inFile); if (secondCh == '/'&&tag==TAG_BEGIN) { char next = fgetc(inFile); if (next != '\n' && next != EOF) { fseek(inFile, -1, SEEK_CUR); } if (next == EOF) { firstCh = EOF; } tag = TAG_END; } else { fputc(firstCh, outFile); fseek(inFile, -1, SEEK_CUR); } fputc('\n', outFile); break; default: fputc(firstCh, outFile); break; } } while (firstCh != EOF); if (tag == TAG_END) { return SUCCESS; } else { return NO_MATCH; } } int StartConvert() { STATE 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_ERROE; } if (outFile == NULL) { fclose(inFile); return FILE_ERROE; } s = AnnotationConvert(inFile, outFile); fclose(inFile); fclose(outFile); return s; } int main() { STATE ret = StartConvert(); if (ret == SUCCESS) { printf("转换成功\n"); } else if (ret == NO_MATCH) { printf("不匹配\n"); } else if (ret == FILE_ERROE) { printf("文件错误: %d\n", errno); } else { printf("其它错误: %d\n", errno); } return 0; }
凝视转换(部分)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。