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

#include<stdio.h>
#include<stdlib.h>
void Annotationconvert(FILE *inFile,FILE *outFile)
{
	char firstCh;
	char secondCh;
	int flag=1; //控制,解决input.c里的3
	do
	{
		firstCh=fgetc(inFile);
		switch(firstCh)
		{
		case'/':
			secondCh=fgetc(inFile);
			if(secondCh=='*'&&flag==1)
			{
				fputc('/',outFile);
				fputc('/',outFile);
				flag=0;
			}
			else
			{
				fputc(firstCh,outFile);
				fputc(secondCh,outFile);
				if(firstCh=='/'&&secondCh=='/')
				{
					do
					{
						firstCh=fgetc(inFile);
						if(firstCh!=EOF)
						{
							fputc(firstCh,outFile);
						}
					}while(firstCh!='\n'&&firstCh!=EOF);//解决 7
				}
			}
			break;
		case'\n':  
			fputc('\n',outFile);
			if(flag==0) //解决 4
			{
				fputc('/',outFile);
				fputc('/',outFile);
			}
			break;
		case'*':
			secondCh=fgetc(inFile);
			if(secondCh=='/')
			{
				char next=fgetc(inFile);
				if(next!='\n'&&next!=EOF)
				{
					fputc('\n',outFile);
					fseek(inFile,-1,SEEK_CUR); //解决 5、2
				}
				if(next=='\n')
				{
					fputc(next,outFile);
				}
				if(next==EOF)
				{
					firstCh=EOF;
				}
				flag=1;
			}
			else if(secondCh=='*')
			{
				fputc(firstCh,outFile);
				fseek(inFile,-1,SEEK_CUR); //解决 6
			}
			else
			{
				fputc(firstCh,outFile);
				fputc(secondCh,outFile);
			}
			break;
		default:
			if(firstCh!=EOF)
			{
				fputc(firstCh,outFile);
			}
			break;
		}
	}while(firstCh!=EOF);
}
int main()
{
	const char *inFileName="input.c";
	const char *outFileName="output.c";

	FILE *inFile=fopen(inFileName,"r");
	FILE *outFile=fopen(outFileName,"w");

	if(inFile==NULL)
	{
		return 0;
	}
	if(outFile==NULL)
	{
		fclose(inFile);
		return 0;
	}
	Annotationconvert(inFile,outFile);
	fclose(inFile);
	fclose(outFile);
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值