C中注释转化为C++中注释类型
来源:互联网 发布:微信公众号seo 编辑:程序博客网 时间:2024/06/06 00:43
实现注释行的转化
//convert.h 头文件#ifndef __CONVERT_H__#define __CONVERT_H__#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#define INPUT "input.c"//定义宏代替访问的文件#define OUTPUT "output.c"//声明一个枚举类型,标识文档状态enum STA{NULLSTAT,CSTAT,CPPSTAT,EOFSTAT};void Convert_main(FILE * input, FILE * output);#endif
//convert.c 实现转化文件#define _CRT_SECURE_NO_WARNINGS 1#include"convert.h"enum STA status = NULLSTAT;void Do_nullstata(FILE * input, FILE * output)//普通情况处理{int f = fgetc(input);switch (f){case '/':{int s = fgetc(input);switch (s){case '/':fputc('/', output);fputc('/', output);status = CPPSTAT;//若遇到//,转为C++状态注释处理break;case '*':fputc('/', output);fputc('/', output);status = CSTAT;//若遇到/*,转为C状态注释处理break;default:fputc(f, output);//其它情况的话,输出这个字符ungetc(s, input);//注意:此处的第二个字符应该退回,//因为不确定它与下一个字符结合会是什么情况}}break;case EOF:status = EOFSTAT;//若遇得到文件结尾,转为文件结束状态处理break;default://若是正常字符,输出即可fputc(f, output);status = NULLSTAT;//保留现在的状态break;}}void Do_cstata(FILE * input, FILE * output)//C注释状态处理{int f = fgetc(input);switch (f){case '\n':fputc(f, output);//遇到换行符则换行,并在下一行注释前面加//fputc('/', output);fputc('/', output);status = CSTAT;break;case '*':{int s = fgetc(input);switch (s){case '/':{int t = fgetc(input);if (t != '\n'){fputc('\n', output);ungetc(t, input);//若是遇到*/则注释结束,若注释后面有内容,则退回读取,设为普通状态//例如 *//int q = 9527;}status = NULLSTAT;break;}default:fputc(f, output);ungetc(s, input);//若只是一个*号,后面不是/,则输出*,第二个字符退回读取,状态不变//例如 /* int j = 10,2*3=6; */break;}}break;case EOF:status = EOFSTAT;break;default:fputc(f, output);status = CSTAT;break;}}void Do_cppstata(FILE * input, FILE * output)//C++注释状态处理{int f = fgetc(input);switch (f){case '\n':fputc(f, output);//遇到换行符,则输出,并将其转换为普通状态status = NULLSTAT;break;case EOF:status = EOFSTAT;break;default :fputc(f, output);//若是普通字符则输出,继续保留C++注释状态status = CPPSTAT;break;}}void Do_eofstata(FILE * input, FILE * output)//文件结束处理{int f = fgetc(input);fputc(f, output);}void Convert_main(FILE * input, FILE * output){while (status != EOFSTAT)//循环访问,若每次没有遇到EOF,则继续访问{switch (status){case NULLSTAT:Do_nullstata(input, output);break;case CSTAT:Do_cstata(input, output);break;case CPPSTAT:Do_cppstata(input, output);break;case EOFSTAT:Do_eofstata(input, output);break;default:break;}}}
//main.c 主函数文件#define _CRT_SECURE_NO_WARNINGS 1#include "convert.h"int main(){FILE * finp=fopen(INPUT, "r");FILE * foutp = fopen(OUTPUT, "w");if (finp == NULL || foutp == NULL){sprintf(stderr, "open file");exit(1);}else{Convert_main(finp, foutp);}fclose(finp);fclose(foutp);fflush(stdin);getchar();return 0;}
//input.c 测试用例文件//我是测试用例// this is cpp \ncomment/* int i = 0; *//* int j = 10,2*3=6; */int k = 3;/*555*/int n = 20;n / 2 = 10;/*int i = 0;int j = 20;int k = 250;*//int q = 9527;/***//* int z = 7748258; *//*int b=94250;*/// /*dsklfjdasl;fdsf;ldsfds*/
//output.c 转化输出文件//我是测试用例// this is cpp \ncomment// int i = 0; // int j = 10,2*3=6; int k = 3;//555int n = 20;n / 2 = 10;////int i = 0;//int j = 20;//int k = 250;///int q = 9527;//*// int z = 7748258; //int b=94250;// /*dsklfjdasl;fdsf;ldsfds*/
阅读全文
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注释转换为cpp注释
- C语言:C语言注释转换C++,注释转化项目C-->C++注释
- 注释转换 (将C注释转换为C++注释)
- 注释转换 续 (C++注释转换为C注释)
- 注释转换(将C注释转换为C++注释)
- 注释转换(C注释转换为c++注释)
- 快速幂之二进制
- ubuntu win10双系统
- 关于Charles的用法总结
- Til the Cows Come Home
- hdu-2570-迷障(贪心)
- C中注释转化为C++中注释类型
- elasticsearch 启动时,指定jdk的版本
- 数据结构实验之图论九:最小生成树
- U—boot的启动步骤笔记
- 关于Joseph problem(约瑟夫环)问题的解法汇总
- etl工具nifi使用系列(二):简单数据处理processor的使用
- Q_learning在自然语言生成中的应用思考
- react入坑之ref的使用
- 关于用51单片机制作计算机