注释转换

在我们写代码是有时要注释,所以很多时候,我们都是ctrl+k+c.既然常常用到,我们不妨写写看看它是怎么转换的。一方面提高编程能力,另一方面,也可以提高自身的的思考和处理问题的能力。

 首先,我们来思考注释转换一个有多少问题。

 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;

大概,就这些吧。一看八个问题,可能有些头大。这么多问题怎么才能解决呢?

我们可以一个一个的解决,分布解决

.h
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<errno.h>
.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include"AnnotationConver.h"
typedef enum State
{
	C_BEGIN,
	C_END,
}State;

void Conver(FILE* put, FILE* Out)
{
	char frist, second;
	State tag = C_BEGIN;
	assert(put);
	assert(Out);
	do
	{
		frist = fgetc(put);
		switch (frist)
		{
		case '/':
			second =  fgetc(put);
				if(second == '*' && tag == C_BEGIN)     // 3.匹配问题
				{
               fputc('/',Out);
			   fputc('/',Out);
			   tag = C_END;
				}
		
			else
			{
				fputc(frist,Out);
				fputc(second,Out);
				if(second == '/')
			{
                char nextch;
                do
              {   nextch = fgetc(put);
                  fputc(nextch, Out);
              } while (nextch != '\n' && nextch != EOF);
			}
				}
			break;
		case'*':
			second =  fgetc(put);
			if(second == '/')
			{
				/*if(tag == C_BEGIN)
			   {
				fputc('\n',Out);
				tag = C_BEGIN;
				}
				else if (tag == C_DD)
				{
					fputc(frist,Out);
					fputc(second,Out);
				}*/
				 char nextch ;
				 fputc('\n', Out);
                    tag = C_BEGIN;
					nextch = fgetc(put);
                   
                    if (nextch == '/')
                    {
                        fseek(put, -1, SEEK_CUR);
                    }
                    else if (nextch != '\n')
                    {
						fputc(nextch, Out);
                    }
			}
			else                                   //连续的**/问题
			{
				fputc(frist,Out);
				fseek(put,-1,SEEK_CUR);
				
			}
			break;
		case '\n':                                       // 4.多行注释问题
			/*second =  fgetc(put);
				if(second == EOF)
			{
				break;
			}*/
			if(tag == C_END)
			{
			 fputc('\n',Out);
			 fputc('/',Out);
			 fputc('/',Out);
           
			}
			/*else if(tag == C_BEGIN)
			{
				fputc(frist,Out);
			}*/
			break;
		default:
			fputc(frist,Out);
			break;
		}
	}while(frist != EOF );
}
void Annotationconver(const char* putfile, const char* Outfile)
{
	FILE* put, *Out;
	put = fopen(putfile,"r");
	if(put == NULL)
	{
		printf("打开文件%s失败,errno:%d\n",putfile,errno);
	}
     Out = fopen(Outfile,"w");
	if(Out == NULL)
	{
		printf("打开文件%s失败,errno:%d\n",Outfile,errno);
	}
	Conver(put, Out);
	fclose(put);
	fclose(Out);
}
int main()
{
	Annotationconver("input.c","output.c");
	system("pause");
	return 0;
}

以上便是,本人自己写出来的,在我们一个接一个解决问题的时候,有时候,在解决第三个问题时,第四个问题也得以解决,或者解决后一个问题时,影响到后一个问题。所以我们要学会思考和调试。从而方便与我们解决问题和实现功能。

标题基于Python的汽车之家网站舆情分析系统研究AI更换标题第1章引言阐述汽车之家网站舆情分析的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义说明汽车之家网站舆情分析对汽车行业及消费者的重要性。1.2国内外研究现状概述国内外在汽车舆情分析领域的研究进展与成果。1.3论文方法及创新点介绍本文采用的研究方法及相较于前人的创新之处。第2章相关理论总结和评述舆情分析、Python编程及网络爬虫相关理论。2.1舆情分析理论阐述舆情分析的基本概念、流程及关键技术。2.2Python编程基础介绍Python语言特点及其在数据分析中的应用。2.3网络爬虫技术说明网络爬虫的原理及在舆情数据收集中的应用。第3章系统设计详细描述基于Python的汽车之家网站舆情分析系统的设计方案。3.1系统架构设计给出系统的整体架构,包括数据收集、处理、分析及展示模块。3.2数据收集模块设计介绍如何利用网络爬虫技术收集汽车之家网站的舆情数据。3.3数据处理与分析模块设计阐述数据处理流程及舆情分析算法的选择与实现。第4章系统实现与测试介绍系统的实现过程及测试方法,确保系统稳定可靠。4.1系统实现环境列出系统实现所需的软件、硬件环境及开发工具。4.2系统实现过程详细描述系统各模块的实现步骤及代码实现细节。4.3系统测试方法介绍系统测试的方法、测试用例及测试结果分析。第5章研究结果与分析呈现系统运行结果,分析舆情数据,提出见解。5.1舆情数据可视化展示通过图表等形式展示舆情数据的分布、趋势等特征。5.2舆情分析结果解读对舆情分析结果进行解读,提出对汽车行业的见解。5.3对比方法分析将本系统与其他舆情分析系统进行对比,分析优劣。第6章结论与展望总结研究成果,提出未来研究方向。6.1研究结论概括本文的主要研究成果及对汽车之家网站舆情分析的贡献。6.2展望指出系统存在的不足及未来改进方向,展望舆情
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值