注释转换
来源:互联网 发布:nginx https 二级域名 编辑:程序博客网 时间:2024/06/15 09:16
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;
头文件:
#ifndef __CONVERT__#define __CONVERT__#pragma warning(disable:4996)#include<stdio.h>#include<stdlib.h>#include<assert.h>#define INPUT_FILE "input.c"#define OUTPUT_FILE "output.c"typedef enum status{ NORMAL_STATUS, C_Status, CPP_Status, END_Status,}Status;void convertBegin();static void convertStatusMachine(FILE * in,FILE * out);void DoNormal(FILE * in, FILE * out);void DoCSatus(FILE * in, FILE* out);void DoCppSatus(FILE * in, FILE* out);#endif // !__CONVERT__
函数部分:
#include"convert.h"Status gStatus=NORMAL_STATUS;void DoNormal(FILE * in, FILE * out)//正常情况下注释转换{ assert(in); assert(out); int first = fgetc(in); int second = 0; switch (first) { case '/': second = fgetc(in); if (second == '*')//如果第二个是*,那么是C语言注释,返回 / / { fputc('/', out); fputc('/', out); gStatus = C_Status; } else if (second == '/')//如果是/,那么是cpp注释,直接返回两个变量的内容 { fputc(first, out); fputc(second, out); gStatus = CPP_Status; } else//否则,不是注释 { fputc(first, out); fputc(second, out); } break; case EOF: gStatus = END_Status; default: fputc(first, out);// break; }}/*xxxxxxxxxxx */void DoCSatus(FILE * in, FILE* out)//C语言类型的注释转换{ assert(in); assert(out); int first = fgetc(in); int second = 0; switch (first) { case '*': second = fgetc(in); if (second == '/')//当第一个为*,第二个为/,第三个是‘\n’,那么是C语言注释 { int third = fgetc(in); if (third == '\n') { fputc(third, out); } else { ungetc(third, in); fputc("\n", out); } gStatus = NORMAL_STATUS; } else { fputc(first, out); ungetc(second, in); } break; case '\n'://如果是‘\n’,那么是cpp注释,直接返回 / / 和第一个字符 fputc(first, out); fputc('/', out); fputc('/', out); break; case EOF://结束转换 gStatus = END_Status; break; default: fputc(first, out); break; }}//xxxxxxxxvoid DoCppSatus(FILE * in, FILE* out)//p类型注释转换{ assert(in); assert(out); int first = fgetc(in); switch (first) { case '\n'://当第一个字符为'\n',那么,为正常转换 gStatus = NORMAL_STATUS; fputc(first, out); break; case EOF://到文本结束符,结束转换 gStatus = END_Status; break; default: fputc(first, out); break; }}static void convertStatusMachine(FILE * in, FILE * out){ assert(in); assert(out); while (gStatus != END_Status) { switch (gStatus) { case NORMAL_STATUS: DoNormal(in, out); break; case C_Status: DoCSatus(in, out); break; case CPP_Status: DoCppSatus(in, out); break; case END_Status: break; default: break; } }}void convertBegin(){ FILE * in = fopen(INPUT_FILE, "r"); if (NULL == in) { perror("fopen"); exit(1); } FILE * out = fopen(OUTPUT_FILE, "w"); if (NULL == out) { perror("fopen"); exit(2); } convertStatusMachine(in, out); fclose(in); fclose(out);}
主函数部分:
#include"convert.h"int main(){ convertBegin(); printf("convert done……\n"); system("pause"); return 0;}
0 0
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 集合框架_ArrayList存储字符串并遍历泛型版
- 打开VMware自动启动指定虚拟机
- July深度学习笔记之图像检测、NeuralStyle
- 5-2 定义并测试一个代表员工的Employee类。
- log日志新玩意Logger
- 注释转换
- SSM框架重构达内NETCTOSS项目——(1)开发准备
- windows平台使用sublime编辑器编译C代码,亲测可用
- 5-3 编写程序
- JDBC源码分析
- 5-4 设计一个Dog类
- Go初体验
- NVIDIA Jetson TK1开发板上手
- Java编程入门程序实践