注释转化程序
程序员文章站
2022-07-14 16:38:31
...
注释转化就是将c注释(/*.....*/)转化成c++注释(//.....)
看代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
enum zhuangtai
{
KONG,
C,
CPP,
END,
};
void cppzhuangtai(FILE*pfin, FILE*pfout, enum zhuangtai *state)
{
int first = 0;
first = fgetc(pfin);//从文件中读取一个字符 来判断
switch (first)
{
case '\0':
{
fputc(first, pfout);//遇到/0换行
*state = KONG;//状态改为 KONG
}
break;
case EOF://遇到EOF表示代码结束
{
fputc(first, pfout);//将EOF输到文件
*state = END;//状态改为 END
}
break;
default://表示遇到的不是注释 ,状态不变
{
fputc(first, pfout); //将读取的字符输出到文件
}
break;
}
}
void czhuangtai(FILE*pfin, FILE*pfout, enum zhuangtai *state)
{
int first = 0;
first = fgetc(pfin);//从文件中读取一个字符 来判断
switch (first)
{
case '\n':
{
fputc(first, pfout);//遇到\0换行
*state = KONG;//状态改为 KONG
}
break;
case EOF://遇到EOF表示代码结束
{
fputc(first, pfout);//将EOF输到文件
*state = END;//状态改为 END
}
break;
default://表示遇到的不是注释 ,状态不变
{
fputc(first, pfout); //将读取的字符输出到文件
}
break;
}
}
void kongzhuangtai(FILE*pfin, FILE*pfout, enum zhuangtai *state)
{
int first = 0;
int second = 0;
first = fgetc(pfin);//从文件中读取一个字符 来判断
switch (first)
{
case '/'://表示要进入注释状态
{
second = fgetc(pfin);//再从文件中读取一个字符 判断
switch (second)
{
case '*'://表示代码是 /* 表示进入C语言注释状态
{
fputc(first, pfout);//将它改为C++注释 输出到文件
fputc(first, pfout);
*state = C;//状态转换为 C注释状态
}
break;
case '/'://表示代码是 // 表示进入C++注释状态
{
fputc(first, pfout);//将注释输出到文件
fputc(second, pfout);
*state = CPP; //状态转换为 C++注释状态
}
break;
default: //表示这个'/ '是字符
{
fputc(first, pfout); //将读取到的字符输出到文件
fputc(second, pfout);
}
break;
}
}
break;
case EOF://遇到EOF表示代码结束
{
fputc(first, pfout);//将EOF输到文件
*state = END;//状态改为 END
}
break;
default://表示遇到的不是注释,状态不变
{
fputc(first, pfout); //将读取的字符输出到文件
}
break;
}
}
void zhuanhua(FILE*pfin, FILE*pfout)
{
enum zhuangtai state = KONG;
while (state != END)
{
switch (state)
{
case KONG:
kongzhuangtai(pfin, pfout, &state);
break;
case C:
czhuangtai(pfin, pfout, &state);
break;
case CPP:
cppzhuangtai(pfin, pfout, &state);
break;
default:
break;
}
}
}
int main()
{
FILE *pfin = fopen("input.c", "r");//在input.c中 读取一个字符
FILE *pfout = fopen("output.c", "w");//在output.c中 写入一个字符
if (pfin == NULL)
{
exit(1);//读到空指针 退出程序
}
if (pfout == NULL)
{
fclose(pfin);
exit(1);//写入空指针 关闭读取的打开文件 然后退出程序
}
zhuanhua(pfin, pfout);
printf("转化成功\n");
fclose(pfin);
fclose(pfout);
system("pause");
return 0;
}
上一篇: 我对响应式编程中Mono和Flux的理解