注释转换
来源:互联网 发布:mac运行速度变慢 编辑:程序博客网 时间:2024/06/08 11:30
AnnotationConversion.h
# pragma once#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <assert.h>#include <errno.h>typedef enum State{ c_BEGIN, c_END}State;typedef enum RunState{ SUCCESS, FILE_WRONG, NO_MATCH}RunState;RunState AnnotationConvert(const char* input,const char* output);
AnnotationConversion.c
#include "AnnotationConversion.h"RunState convert(FILE* input, FILE* output){ char first,second; RunState ret = SUCCESS; State tag = c_END; assert(input); assert(output); do{ first = fgetc(input); switch(first) { case '/': second = fgetc(input); if(second == '*') { //3.匹配问题 if(tag == c_END) { fputc('/',output); fputc('/',output); tag = c_BEGIN; } else { fputc('/', output); fputc('*', output); } } else if(second == '/')//C++注释问题 { char next; fputc(first, output); fputc(second, output); do { next = fgetc(input); fputc(next, output); if(next == EOF) { return ret; } }while(next != '\n'); } else { fputc(first, output); fputc(second, output); } break; case '\n'://4.多行注释问题 if(tag == c_BEGIN) { fputc(first, output); fputc('/', output); fputc('/', output); } else { fputc(first, output); } break; case '*': second = fgetc(input); if(second == '/') { //2.换行情况 char next = fgetc(input); if(next == '/')//5.连续注释问题 { fputc('\n', output); fseek(input, -1, SEEK_CUR); } else if(next != '\n'&& next != EOF) { fputc('\n', output); fputc(next, output); } else { fputc('\n', output); } tag = c_END; } else if(second == '*')//6.连续的***/问题 { fputc(first, output); fseek(input, -1, SEEK_CUR); } else { fputc(first,output); fputc(second,output); } break; default: if(first != EOF) { fputc(first,output); } break; } }while(first != EOF); if(tag == c_BEGIN) { return NO_MATCH; }}RunState AnnotationConvert(const char* inputFile,const char* outputFile){ FILE* fIn,*fOut; RunState ret; fIn = fopen(inputFile, "r"); if(fIn == NULL) { printf("%s文件打开失败 Error:%d\n",inputFile,errno); return FILE_WRONG; } fOut = fopen(outputFile, "w"); if(fOut == NULL) { fclose(fIn); printf("%s文件打开失败 Error:%d\n",outputFile,errno); return FILE_WRONG; } ret = convert(fIn,fOut); fclose(fIn); fclose(fOut); return ret;}
Test.c
#include <stdlib.h>#include "AnnotationConversion.h"int main(){ RunState ret; ret = AnnotationConvert("inputFile.c"," outputFile.c"); if(ret ==SUCCESS) { printf("SUCCESS"); } else if(ret == FILE_WRONG) { printf("FILE_WRONG"); } else { printf("NO_MATCH"); } system("pause"); return 0;}
inputFile.c
1.一般情况/*int m = 0;*/2.换行问题/*int i = 0;*/int j = 0;/*int i = 0;*/int j = 0;3.匹配问题/*int i = 0/*j = 0*/4.多行注释问题/*int i = 0;int j = 1;*/int k = 2;5.连续注释问题/*aaa*//*bbb*/6.连续的***/问题/***/7.c++注释问题// /*int i = 0;
outputFile.c
1.一般情况//int m = 0;2.换行问题//int i = 0;int j = 0;//int i = 0;int j = 0;3.匹配问题//int i = 0/*j = 04.多行注释问题////int i = 0;//int j = 1;//int k = 2;5.连续注释问题//aaa//bbb6.连续的**问题//*7.c++注释问题// /*int i = 0;
0 0
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 编写C语言程序求两个数的最大公约数
- C语言错误:missing ';' before 'type'
- C语言 猜数字游戏
- C语言:折半查找
- 静态和动态顺序表的实现(c语言)
- 注释转换
- C++/C中防止头文件的重复包含的解决办法及区别
- error C2533构造函数不能有返回类型
- 数据结构:模板实现栈和队列
- 初级版迷宫问题(栈的应用)
- [c语言]单链表的实现
- 约瑟夫环
- 找链表的中间结点和倒数第k个结点(链表笔试题面试题)
- 刷刷笔试题~(4)编程