#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;
}