由于C语言的注释通常是 /* XXXXX */

c++的注释通常是// XXXX

来上一张图看看。

  • 以下是一些C语言的通常注释
// 1.一般情况
int num = 0;
/* 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*/

大家请看代码

头文件

commentconvert.h

#ifndef __COMMENT_CONVERT_H__
#define __COMMENT_CONVERT_H__#include <stdio.h>
#include <stdlib.h>enum State
{NUL_STATE,  //0C_STATE,  //1CPP_STATE,  //2 END_STATE  //3
};void DoCommentConvert(FILE*pfIn, FILE*pfOut);
void DoNulState(FILE*pfIn, FILE*pfOut, enum State* ps);
void DoCState(FILE*pfIn, FILE*pfOut, enum State* ps);
void DoCppState(FILE*pfIn, FILE*pfOut, enum State* ps);#endif //__COMMENT_CONVERT_H__

测试函数

test.c

#define _CRT_SECURE_NO_WARNINGS 1#include "commentconvert.h"#include<stdio.h>
#include<stdlib.h>test()
{FILE* pfIn = NULL;FILE* pfOut = NULL;enum State* ps = NULL;pfIn=fopen("E:\\input.c", "r");pfOut = fopen("E:\\output.c", "w");if (pfIn == NULL){perror("open file for read");exit(EXIT_FAILURE);}if(pfOut == NULL){fclose(pfIn);perror("open file for write");exit(EXIT_FAILURE);}DoCommentConvert(pfIn, pfOut);fclose(pfIn);pfIn = NULL;fclose(pfOut);pfOut = NULL;printf("转换成功");
}int main()
{test();system("pause");}

功能函数

commentconvert.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "commentconvert.h"void DoNulState(FILE*pfIn, FILE*pfOut, enum State* ps)  //未知状态
{int first = fgetc(pfIn);switch (first){case '/':{int second = fgetc(pfIn);switch (second){case '*':  //检测到  /*   那么就是C语言注释{fputc('/', pfOut);fputc('/', pfOut);*ps = C_STATE;}break;case '/':     //检测到  //   那么就是c++注释{fputc(first, pfOut);fputc(second, pfOut);*ps = CPP_STATE;}break;default:    //其他情况不用管,直接输出{fputc(first, pfOut);fputc(second, pfOut);}break;}}break;case EOF:   //遇到EOF ,转到结束{fputc(first, pfOut);*ps = END_STATE;}break;default:   //遇到其他情况,直接输出{fputc(first, pfOut);}break;}}void DoCState(FILE* pfIn, FILE* pfOut, enum State* ps)  //C语言注释
{ int first = fgetc(pfIn);  switch (first){case '*':   {int second = fgetc(pfIn);switch (second){case '/':{int third = fgetc(pfIn);if (third == '\n')  //  有换行应当换行{fputc(third, pfOut);}else{fputc('\n', pfOut);ungetc(third, pfIn);}*ps = NUL_STATE;}break;default:{fputc(first, pfOut);ungetc(second, pfIn);//将多余用来判断的字符撤销   }break;}}break;case '\n'://换行之后要加上 // 因为C++只注释能一行  {fputc(first, pfOut);fputc('/', pfOut);fputc('/', pfOut);}break;default:{fputc(first, pfOut);}break;}}void DoCppState(FILE*pfIn, FILE*pfOut, enum State* ps)   //c++注释
{int ch = fgetc(pfIn);switch (ch){case '\n':  //换行fputc(ch, pfOut);*ps = NUL_STATE;break;case EOF:  //结束*ps = END_STATE;break;default:fputc(ch, pfOut);break;}}
void DoCommentConvert(FILE* pfIn, FILE* pfOut)
{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;}}
}

大家看代码的时候参照上面的那张图还有那个常用的注释代码。如有问题,大家还请指出。

注释转换 (C语言注释转换为c++注释)相关推荐

  1. c语言注释和代码互换,c语言项目—注释转换(c——c++)

    题目要求: 要将全部的c语言风格的注释转换为c++风格的注释,如下图所示,需要将input.c文件经过注释转换程序转换为output.c文件所示. 这是测试结果: 首先我们来分析一下这个题目,在做这个 ...

  2. c语言注释换颜色,C语言实现注释转换

    将C语言注释转换成C++注释 #pragma once #pragma warning (disable:4996) typedef enum ConvertState { SUCCESS,//转换成 ...

  3. 注释转换——(小项目)

    一门计算机语言如果想要运用的得心应手,离不开长久的练习,针对C语言的用法,下面主要是用C语言来解决注释转换的问题,C语言中注释是以"/*"开始,以"*/"结束, ...

  4. 项目(2)——注释转换工具

    项目--注释转换工具 一.简历上写的 二.为什么要做这个项目? 在一个大型工程当中,由于代码人员的多样性,使得代码的注释风格不同.然而在发布版本中,注释风格应该保持一致,以便于其他人员在后期的使用和维 ...

  5. 注释转换,较详细。新手上路,请多关照

    Duang,下面开始彩虹字. 今天呢,为大家带来的是注释转换的小代码. 程序功能 让多行C语言的多行注释转换成CPP的单行注释,遇到CPP的单行注释,无注释代码不变. 必要的函数解释 本程序是对文件进 ...

  6. 鹏哥C语言 -3. 转义字符、注释、初识选择语句、初识循环语句、函数、操作符1

    转义字符 转义字符:转变了原来的意思. 例如: 打印文件位置: int main() {printf("c:\test\test.c"); //运行结果中没有\t.printf(& ...

  7. python语言中如何使用注释

    每一种计算机语言都有自己的注释方式,我们知道注释的作用是解释这些代码,方便程序员以后的检查和修改.而且注释的一部分在运行程序的过程中不起作用,也不会显示出来.下面我们将为大家介绍,在python语言中 ...

  8. 编写一个程序,实现将c语言源程序中的注释全部删除

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 6.编写一个程序,实现将c语言源程序中的注释全部删除 #include<stdl ...

  9. c++ doxygen 注释规范_C语言代码注释参考

    简述 该参考是基于Doxygen注释规范进行简单归纳,可以适当根据自己的需求进行约定. Doxygen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX.RTF参考手册.简单 ...

  10. C语言编程规范--------2 注释

    2.1 注释的原则 注释的目的是解释代码的目的.功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息. 示例:如下注释意义不大. /* if receive_flag is ...

最新文章

  1. QQ超时不能刷新好友接收发送信息
  2. jquery 获取一组元素的选中项 - 函数、jquery获取复选框值、jquery获取单选按钮值...
  3. 2019年上半年收集到的AI计算机视觉方向干货文章
  4. 虚拟机 pxe服务器,配置PXE安装ESXi主机
  5. Cython的简单使用
  6. 使用ueditor小结
  7. 多核学习在图像分类中的应用
  8. 项目中提示找不到sun.misc.BASE64Encoder
  9. what??|诞生才一年的BCH竟面临硬分叉的抉择
  10. java实现——客户端登录
  11. 回调机制在 Android 监听用户界面操作中的体现
  12. 漫谈边缘计算(二):各怀心事的玩家
  13. 掌握这8个CSS开发工具让你瞬间成为开发高手
  14. java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
  15. kuangbin专题-简单搜索
  16. CleanMyMac X最新2022如何激活许可证解决教程
  17. C#几行代码让电脑蓝屏
  18. Win10 Edge浏览器如何截网页长图
  19. 论文笔记:NeuS: Learning Neural Implicit Surfaces by Volume Rendering for Multi-view Reconstruction
  20. for的用法详解,for循环完全攻略

热门文章

  1. semantic ui中文文档_一起学Vue:UI框架(element-ui)
  2. java 高级调试_多种高级debug方法,帮你更快定位问题
  3. HighCharts:图表默认的英文日期改为中文显示
  4. linux 命令行字符缩放,用Linux命令行修图——缩放、编辑、转换格式
  5. 论文笔记_S2D.22_2015-CVPR_利用深度特征回归和分层CRFs对单目图像进行深度和表面法线估计
  6. 随手记_ubuntu下配置vscode+cmake c++开发环境
  7. 未来5-10年计算机视觉发展趋势,RACV2019观点集锦
  8. Yolo-FastestV2: 更快,更轻,移动端可达300FPS,参数量仅250k
  9. kaggle实战之流浪猫狗归处预测
  10. Sending form data