注释转换小项目(c注释->到c++注释)
来源:互联网 发布:招财猫是什么软件 编辑:程序博客网 时间:2024/05/29 08:11
首先欢迎阅读本文,注释转换小项目涉及到c语言对文件的操作,另外这个小项目还应该对各种情况都考虑到。将c语言注释转换为c++注释
经过分析思考,我得到证据要的注释转换有以下几类:我将之整理并放入一个文件里,起名input.c
//1.一般情况/* int i=0;*///2.换行问题/* int i=0;*/int j = 0;/* int i=0 */int j = 0;//3.匹配问题/* int i=0;/*xxxxxxx*///4.多行注释/*int i=0;int j=0int k=0;*/int f = 0;//5.连续注释问题/**//**///6.连续的**/问题/***///7.C++注释问题// /*xxxxxxxxxxxxxxx*/
通过C语言代码对其进行注释转换,并输出到另一个文件里,我起名为output.c,
之所以起名后缀为.c 是为了打开方便,当然也可起名后缀为.txt,.doc等等
程序代码如下:
头文件(函数定义):AnnotationConversion.h
#pragma once#include<stdlib.h>#include<stdio.h>#include<assert.h>#include<errno.h>typedef enum Srate{C_BEGIN,C_END,}Srate;void Convert(FILE *fIn, FILE *fOut);void AnnotationConversion(const char* inputFile,const char* outputFile);
实现文件(测试函数):
#include"AnnotationConversion.h"void Convert(FILE *fIn, FILE *fOut) //打开文件{char first, second;Srate tag = 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);}}else if ('/' == second) //C++注释问题{char next;fputc('/', fOut);fputc('/', fOut);do{next = fgetc(fIn);if (EOF == next){break;}elsefputc(next, fOut);} while (('\n' != next) && (EOF != next));}else{fputc(first, fOut);fputc(second, fOut);}break;case'\n':fputc('\n', fOut);if (tag == C_BEGIN) //4.多行注释问题{fputc('/', fOut);fputc('/', fOut);}break;case '*':second = fgetc(fIn);if (second == '/'){// 2.换行问题char next = fgetc(fIn);if (EOF == next){fseek(fIn, -1, SEEK_CUR);}//5.连续注释问题else if ('/' == next){fputc('\n', fOut);fseek(fIn, -1, SEEK_CUR);}else if (('\n' != next) && (EOF != next)){fputc('\n', fOut);fputc(next, fOut);}elsefputc('\n', fOut);tag = C_END;}else if ('*' == second) //6.连续的**/问题{fputc(first, fOut);fseek(fIn, -1, SEEK_CUR);}else{fputc(first, fOut);fputc(second, fOut);}break;default:if (EOF == first)break;fputc(first, fOut);break;}} while (first != EOF);}void AnnotationConversion(const char* inputFile,const char* outputFile){FILE * fOut, *fIn;fIn = fopen(inputFile, "r");if (fIn == NULL){printf("打开文件%s失败!errno:%d\n", inputFile, errno);return;}fOut = fopen(outputFile, "w");if (fOut == NULL){fclose(fIn);printf("打开文件%s失败!errno:%d\n", inputFile, errno);return;}Convert(fIn, fOut);fclose(fIn);fclose(fOut);}int main(){AnnotationConversion("input.c","output.c");system("pause");return 0;}
结果如下:原本output.c文件里啥也没有,运行程序之后结果如下:
//1.一般情况// int i=0;//2.换行问题// int i=0;int j = 0;// int i=0 int j = 0;//3.匹配问题// int i=0;/*xxxxxxx//4.多行注释////int i=0;//int j=0//int k=0;//int f = 0;//5.连续注释问题//////6.连续的**/问题//*//7.C++注释问题// /*xxxxxxxxxxxxxxx*/
测试结果无误,限于本人目前水平,只能写出如上代码,带有进步之时,定会再做修改,如果那位发现了问题,恳请对我提出批评指正,谢谢
本文出自 “分享中进步” 博客,请务必保留此出处http://xmwen1.blog.51cto.com/10730069/1752605
1 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++的注释转换)
- 注释转换(从c到c++)
- c++中的双向链表写法,主要实现(增删查改,链表逆置,构造函数,运算符重载,等)
- 古典密码之hill密码的加密与解密程序实现
- 小明哥教你使用模板函数实现顺序表
- [C++] 利用模板的模板参数实现单链表
- std的terminate函数
- 注释转换小项目(c注释->到c++注释)
- 浅析《大数据运算》-加减乘除以及模除运算
- 初试->广义表
- 排序算法之插入排序
- 新手建站需要知道的一些知识
- hdu 5715 XOR 游戏(trie)
- 如何保证Service不被杀死一直运行
- 字符串指针变量
- [BZOJ2629]binomial (高精度+Lucas定理+离散对数+FFT)