【C语言项目】注释转换
来源:互联网 发布:旅游购物 知乎 编辑:程序博客网 时间:2024/05/28 19:23
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <assert.h>#include <stdlib.h>typedef enum ConvertState{ SUCCESS, FILE_ERROR, NO_MATCH,}ConvertState;typedef enum State{ C_BEGIN, C_END, CPP_BEGIN, CPP_END,}State;ConvertState Convert(FILE* fIn, FILE* fOut){ ConvertState ret = SUCCESS; char first, second; State tag = C_END; assert(fIn); assert(fOut); do { first = fgetc(fIn); switch (first) { case '/': second = fgetc(fIn); if (second == '*') { if (tag == C_END) { fputc('/', fOut); fputc('/', fOut); tag = C_BEGIN; } else { fputc('/', fOut); fputc('*', fOut); } } else if (second == '/') { char next; fputc('/', fOut); fputc('/', fOut); do { next = fgetc(fIn); fputc(next, fOut); if (next == EOF) { return ret; } } while (next != '\n'); } else { fputc(first, fOut); fputc(second, fOut); } break; case '\n'://多行注释问题 fputc('\n', fOut); if (tag == C_BEGIN) { fputc('/', fOut); fputc('/', fOut); } break; case '*': second = fgetc(fIn); if (second == '/') { //换行问题 char next = fgetc(fIn); //连续注释问题 if (next == '/') { fputc('\n', fOut); fseek(fIn, -1, SEEK_CUR); } else if (next != '\n' && next != EOF) { fputc('\n', fOut); fputc(next, fOut); } else { fputc('\n', fOut); } tag = C_END; } else if (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; } return ret;}ConvertState AnnotationConvert(const char* inputFile, const char* outputFile){ ConvertState ret; FILE* fIn, *fOut; fIn = fopen(inputFile, 'r'); if (inputFile == NULL) { printf("打开文件%s失败, errno: %d\n", inputFile, errno); return FILE_ERROR; } fOut = fopen(outputFile, 'w'); if (outputFile == NULL) { fclose(fIn); printf("打开文件%s失败,errno: %d\n", outputFile, errno); return FILE_ERROR; } ret = convert(fIn,fOut); fclose(fIn); fclose(fOut); return ret;}int main(){ }
注释转换--
C语言的注释 -> C++的注释
C语言的注释 /* xxxxx */
C++的注释 //xxxxx
// 1.一般情况
/* int i = 0; */
// 2.换行问题
/* int i = 0; */int j = 0;
/* int i = 0; */
int j = 0;
// 3.匹配问题
/*int i = 0;/*xxxxx*/
// 4.多行注释问题
/*
int i=0;
int j = 0;
int k = 0;
*/int k = 0;
// 5.连续注释问题
/**//**/
// 6.连续的**/问题
/***/
// 7.C++注释问题
// /*xxxxxxxxxxxx*/
// 8.C注释本身不匹配
/* int i = 0;
本文出自 “Han Jing's Blog” 博客,请务必保留此出处http://10740184.blog.51cto.com/10730184/1743806
0 0
- c语言项目-注释转换
- 【C语言项目】注释转换
- c语言注释转换项目
- C语言小项目—注释转换
- c语言小项目----注释转换
- 注释转换——C语言项目
- C语言小项目---注释转换
- 【C语言】注释转换项目实现
- C语言小项目-注释转换
- c语言小项目---注释转换
- C语言小项目--注释转换
- C语言:C语言注释转换C++,注释转化项目C-->C++注释
- C语言小项目—注释转换( C注释转换为C++注释 )
- C语言项目:注释转换(C风格注释转换成C++风格注释)
- 【C语言】注释转换
- C语言 注释转换
- 【C语言】注释转换
- [项目]注释转换 ——C++注释转换为标准C语言注释
- C# 实体模型EF关联数据库
- c语言:【顺序表】静态顺序表的删除指定位置元素Erase、删除指定元素Remove
- Oracle去掉重复数据
- C语言:【动态顺序表】动态顺序表的初始化、打印、尾插PushBack、尾删PopBack
- C语言:【动态顺序表】动态顺序表的在指定位置插入元素Insert,以及指定元素Find
- 【C语言项目】注释转换
- 【String类浅拷贝的实现】C++:String类引用计数浅拷贝的两种实现
- 【String类】C++:String类的传统写法与现代写法
- 《剑指offer》字符串中的字符替换
- 【C++】实现动态顺序表的PushBack(),PopBack(),PushFront(),PopFront(),Find(),Insert
- 【C++】用类实现单向单链表的尾插PushBack(),尾删PopBack(),打印PrintSlist()。
- 【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)
- 【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)
- 【继承与多态】C++:继承中的赋值兼容规则,子类的成员函数,虚函数(重写),多态