注释转换(C->C++)

2023-11-14

转换原理图解:

基于上图原理,可以写出代码:

 

//主函数:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include "标头.h"
int main()
{
	convert();
	system("pause");
	return 0;
}

 

//具体实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include "标头.h"

void convert()
{
	FILE *fop = fopen("c注释.c", "r");
	FILE *fop1 = fopen("C++注释.cpp", "w");
	if (fop == NULL||fop1==NULL)
		perror("The following error occurred");
	else
	{
		ele = Null_case;
		while (ele != eof_case)
		{
			int ch=getc(fop);
			switch (ele)
			{
			case C_case:
				do_c(ch,fop,fop1);
				break;
			case Cpp_case:
				do_cpp(ch, fop, fop1);
				break;
			case Null_case:
				do_Null(ch, fop, fop1);
				break;
			case eof_case:
				ele = eof_case;
				break;
			default:
				break;
			}
		}
	}
	fclose(fop);
	fclose(fop1);
	return 0;
}
void do_Null(int ch, FILE* fop, FILE *fop1)
{
	switch (ch)
	{
	case '/':
	{
				int ch = getc(fop);
				switch (ch)
				{
				case'/':
				{
						   putc('/', fop1);
						   putc('/', fop1);
						   ele = Cpp_case;
						   break;
				}
				case '*':
				{
							putc('/', fop1);
							putc('/', fop1);
							ele = C_case;
							break;
				}
				case EOF:
				{
							putc('/', fop1);
							ele = eof_case;
							break;
				}
				default:
				{
						   putc('/', fop1);
						   ch = ungetc(ch, fop);
						   ele = Null_case;
						   break;
				}
                }
				break;
	}
	case EOF:
		ele = eof_case;
		break;
	default:
		putc(ch, fop1);
		break;
	}
	return;
}
void do_c(int ch, FILE* fop, FILE *fop1)
{
	switch (ch)
	{
	case '*':
	{
				int ch = getc(fop);
				switch (ch)
				{
				case '/':
				{
							ele = Null_case;
							break;
				}
				case EOF:
					ele = eof_case;
					break;
				default:
				{
						   putc('*', fop1);
						   ch = ungetc(ch, fop);
						   ele = C_case;
						   break;
				}
				}
				break;
	}
	case '\n':
	{
				 putc(ch, fop1);
				 putc('/', fop1);
				 putc('/', fop1);
				 ele = C_case;
				 break;
	}
	case EOF:
		ele = eof_case;
		break;
	default:
		putc(ch, fop1);
		break;
	}
	return;
}
void do_cpp(int ch, FILE* fop, FILE *fop1)
{
	switch (ch)
	{
	case'\n':
	{
		putc(ch, fop1);
		ele = Null_case;
		break;
	}
	case EOF:
		ele = eof_case;
		break;
	default:
		putc(ch, fop1);
		break;
	}
	return;
}

 

 

//头文件
#pragma once
#include<windows.h>
enum
{
	C_case,
	Cpp_case,
	Null_case,
	eof_case
}ele;
void convert();
void do_c(int ch, FILE* fop, FILE *fop1);
void do_cpp(int ch, FILE* fop, FILE *fop1);
void do_Null(int ch, FILE* fop, FILE *fop1);


测试结果:


 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

注释转换(C->C++) 的相关文章

  • springboot 集成 elasticsearch(maven项目)

    1 搭建springboot项目 能跑起来 具体百度 我的springboot版本 1 5 9 RELEASE 2 本机或者服务器安装elasticsearch并启动服务成功 我本地Windows安装的elasticsearch版本6 1

随机推荐

  • geo算法了解学习以及选择

    需求 通过坐标了解到距离最近的桩号 建筑 景点 Mysql Sql语句 SELECT id ST Distance Sphere POINT item longitude item latitude POINT longitude lati
  • Postman第七篇:其他好用的功能及工具

    其他好用的功能及工具 分组 Collection 在刚开始一个项目时 为了后续便于组织和管理 把同属该项目的多个 API 放在一组里 所以要先去新建一个 Collection New gt Collection 使用了段时间后 建了多个分组
  • 如何创建一个自己的sphinx文档网站

    文章目录 前言 一 操作步骤 1 安装anaconda 2 启动python3 8环境 3 安装Sphinx 4 创建文件夹 5 初始化环境 6 编译 7 文件夹搭查看 8 搭建nginx查看 8 更换主题 9 错误修复 10 这里提供两个
  • IDEA学习记录19--sql注入与Statement预编译

    1 sql注入 package net xdclass web dao import java sql Connection import java sql DriverManager import java sql ResultSet i
  • 从FindBugs中学Java【一】

    2019独角兽企业重金招聘Python工程师标准 gt gt gt findbug 这里 中文列表 http svn codehaus org sonar plugins tags sonar l10n zh plugin 1 1 src
  • forwardRef 的详解及使用

    一 介绍 React forwardRef 会创建一个React组件 这个组件能够将其接受的 ref 属性转发到其组件树下的另一个组件中 这种技术并不常见 但在以下两种场景中特别有用 转发 refs 到 DOM 组件 在高阶组件中转发 re
  • vue 一直发送请求websocket

    vue项目运行时一直请求websocket 导致控制台 接口大量报错无法查看控制台输出内容以及接口返回值 解决办法 打开 node modules sockjs client dist sockjs js 文件将 self xhr send
  • easyexcel poi 指定行指定列设置样式

    easyexcel poi 指定行指定列设置样式 1 给指定行指定列设置字体及居中 2 给指定行指定列设置边框 1 给指定行指定列设置字体及居中 给指定行指定列设置字体及居中 param workbook param rowIndex 第几
  • 【小沐学CAD】虚拟仿真开发工具:GL Studio

    文章目录 1 简介 2 软件功能 3 应用行业 3 1 航空 3 2 汽车 3 3 防御 3 4 工业 3 5 电力与能源 3 6 医疗 3 7 空间 3 8 科技 结语 1 简介 https disti com gl studio htt
  • 数据结构之算法复杂度篇

    要努力 但是不要急 繁花锦簇 硕果累累都需要过程 目录 前言 1 什么是数据结构 2 什么是算法 3 算法的复杂度 1 概念 2 时间复杂度 3 空间复杂度 4 常见的复杂度对比 4 复杂度的oj练习 5 总结 前言 在程序段运行的时候 我
  • 将h5封装为微信小程序

    1 要求网站域名必须为https 2 登录微信公众号好注册一个小程序账号 3 打开威胁你开发者工具进行创建 4 打开app json文件 pages项只保留 pages index index 这一行 5 打开 pages index in
  • 【千律】C++基础:类定义和类实现的分离

    类定义就是指定义类名 是 h文件 类实现是指对类定义的具体实现 是 cpp文件 下面是Student h中的内容 pragma once include
  • frc机器人比赛主题_参加了十几场机器人竞赛后,我才敢告诉你:怎样做到不“踩坑”?...

    在决定参加比赛之前 先问自己为什么 为什么要先聊这一点 因为这个问题会决定你的很多选择 很多家长会先去看那个 果 比如 比赛获奖有没有用 这个比赛含金量如何 但是这个 因 是每个家长要先问自己的 你是不是认同机器人竞赛是对孩子综合能力的提升
  • 2000端口号的坑

    这两天对接某游戏的充值接口的时候碰到一个恶心的问题 公司机器和服务器请求游戏方2000端口号的时候 死活获取不到返回No Response 但是同一个请求串外网环境都是正常的 经多次和游戏方你来我往之后发现 2000端口默认是sccp协议
  • 2W字长文吐血整理 Docker&云原生

    Docker 和 云原生 一 概念介绍 1 1 Docker Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 然后发布到任何流行的 Linux或Windows操作系统的机器上 也可以实现虚拟
  • React 应用的 Nginx 缓存控制

    典型 React 应用面临的缓存问题 可通过 Nginx 配置进行解决 通用部署 构建应用后 只需使用 Nginx 指向静态文件即可 server listen 80 root PATH TO APP build try files uri
  • 爬虫碎碎念

    20230304 非专业人士 简单记录自己的需求和思考 0 引言 平时看到一些网站的照片什么的 有那种批量下载的需求 当然有些也是视频网站的图片介绍什么的 也即是说 我需要把这些网站的照片批量下载下来 以前的时候 写过简单的爬虫 因为需求比
  • Docker——搭建ELK

    安装Elasticsearch 1 拉取镜像 docker box home box docker pull elasticsearch 7 14 2 2 在宿主机准备配置文件 创建目录 docker box mkdir p server0
  • 资源list:Github上关于大数据的开源项目、论文等合集

    Awesome Big Data A curated list of awesome big data frameworks resources and other awesomeness Inspired byawesome php aw
  • 注释转换(C->C++)

    转换原理图解 基于上图原理 可以写出代码 主函数 define CRT SECURE NO WARNINGS 1 include