C语言注释转化为C++注释(C语言实现)
来源:互联网 发布:小幸软件工作室 编辑:程序博客网 时间:2024/05/29 07:41
/* int a=0;*/是C语言注释风格,而我们都知道C语言这样的注释是有缺陷的(不能嵌套注释),为了弥补这一缺陷,可将C语言注释风格改为C++注释风格(//int a=0;).本文就来讲一下怎么运用C语言实现C注释转化为C++注释。
在一段代码中,往往会出现很多种情况,先来讨论一下可能存在的情况。
看图:(NUL代表正常情况,END代表结束)
请看具体代码:
头文件及函数声明(ComentConvert.h)部分
#define _CRT_SECURE_NO_WARNINGS#ifndef __COMMENT_CONVER_H__#define __COMMENT_CONVER_H__#include <stdio.h>#include <stdlib.h> enum STATE{END_STATE,NUL_STATE,C_STATE,CPP_STATE};void DoNulState(FILE* pfIn, FILE* pfOut, enum STATE *s);//处理正常情况void DoCState(FILE* pfIn, FILE* pfOut, enum STATE *s);//处理C语言注释部分void DoCPPState(FILE* pfIn, FILE* pfOut, enum STATE *s);//处理C++注释部分#endif//__COMMENT_CONVER_H__
具体函数实现ConmentConvert.c部分
#define _CRT_SECURE_NO_WARNINGS#include "ComentConvert.h"void DoNulState(FILE* pfIn, FILE* pfOut, enum STATE *s){int first = 0;first = fgetc(pfIn);switch (first){case '/':{int second = 0;second = fgetc(pfIn);switch (second){case '/':fputc(first, pfOut);fputc(second, pfOut);*s = CPP_STATE;break;case '*':fputc(first, pfOut);fputc(first, pfOut);*s = C_STATE;break;default:fputc(first, pfOut);fputc(second, pfOut);break;}}break;case EOF:*s = END_STATE;break;default:fputc(first,pfOut);break;}}void DoCState(FILE* pfIn, FILE* pfOut, enum STATE *s){int first = 0;first = fgetc(pfIn);switch (first){case '*':{int second = 0;second = fgetc(pfIn);switch (second){case '*':ungetc(second, pfIn);fputc(second, pfOut);break;case '/':fputc('\n', pfOut);*s = NUL_STATE;break;default:fputc(first, pfOut);fputc(second, pfOut);break;}}break;case '\n':fputc(first, pfOut);fputc('/', pfOut);fputc('/', pfOut);break;default:fputc(first, pfOut);break;}}void DoCPPState(FILE* pfIn, FILE* pfOut, enum STATE *s){int first = 0;first = fgetc(pfIn);switch (first){case EOF:*s = END_STATE;break;default:fputc(first, pfOut);*s = NUL_STATE;break;}}
#include "ComentConvert.h"void test(){FILE* pfIn = NULL;FILE* pfOut = NULL;pfIn = fopen("input.c", "r");if (pfIn == NULL){perror("open a file for read");exit(EXIT_FAILURE);}pfOut = fopen("output.c", "w");if (pfOut == NULL){perror("open a file for write");fclose("input.c");exit(EXIT_FAILURE);}enum STATE state=NUL_STATE;while (state!=END_STATE){switch (state){case NUL_STATE:DoNulState(pfIn, pfOut, &state);break;case C_STATE:DoCState(pfIn, pfOut, &state);break;case CPP_STATE:DoCPPState(pfIn, pfOut, &state);break;}}}int main(){test();return 0;}
注释转换前后的对比:
PS:欢迎大家提出宝贵意见
阅读全文
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语言小项目—注释转换( C注释转换为C++注释 )
- C++注释转化为C注释
- c语言中的注释
- C语言注释风格
- C语言注释
- C语言嵌套注释
- 微信小程序 this.setData is not a function
- 异步http://www.cnblogs.com/fsjohnhuang/p/6109701.html
- Java NIO
- 【C语言】C语言实现文件版通讯录
- 应用经验 项目 基于51的数据采集系统感想(人文)
- C语言注释转化为C++注释(C语言实现)
- java多线程学习提升(一)
- mint-ui —— navbar的使用
- 《应用拆分与平台搭建最佳实践》- 前言
- Qt中的UDP通信
- python学习之路(2)
- CodeForces
- require入门教程
- 【概念的辨异】—— ISO C 与 POSIX C(C standard library 与 C POSIX library)