C注释转换到C++注释项目
来源:互联网 发布:52pk软件下载 编辑:程序博客网 时间:2024/05/20 16:00
.h文件
#ifndef__COMMENT_CONVERT_H__
#define__COMMENT_CONVRET_H__
#include<stdio.h>
#include<stdlib.h>
#defineINPUTFILENAME "input.c"
#defineOUTPUTFILENAME"output.c"
typedefenumCONVERT_STATE
{
NULL_STATE,
C_STATE,
CPP_STATE,
END_STATE
}StateType;
voidCommentConvert();
voidConvertWork(FILE*read,FILE*write);
voidDoNullState(FILE*read,FILE*write);
voidDoCState(FILE*read,FILE*write);
voidDoCppState(FILE*read,FILE*write);
#endif
.c文件
#define_CRT_SECURE_NO_WARNINGS1
#include"CommentConvert.h"
StateTypestate;
voidDoCppState(FILE*read,FILE*write)
{
intfirst = fgetc(read), second = 0;
switch(first)
{
case'\n':
fputc(first,write);
state = NULL_STATE;
break;
caseEOF:
//fputc(first, write);
state = END_STATE;
break;
default:
fputc(first,write);
break;
}
}
voidDoCState(FILE*read,FILE*write)
{
intfirst = fgetc(read), second = 0,third=0;
switch(first)
{
case'*':
second = fgetc(read);
if(second =='/')
{
third = fgetc(read);
if(third =='\n')
fputc(third,write);
else
{
ungetc(third,read);
fputc('\n',write);
}
state = NULL_STATE;
}
elseif(second =='*')
{
ungetc(second,read);
fputc(first,write);
}
else
{
fputc(first,write);
fputc(second,write);
}
break;
case'\n':
fputc(first,write);
fputc('/',write);
fputc('/',write);
break;
caseEOF:
//fputc(first, write);
state = END_STATE;
break;
default:
fputc(first,write);
break;
}
}
voidDoNullState(FILE*read,FILE*write)
{
intfirst = fgetc(read), second = 0;
switch(first)
{
case'/':
second = fgetc(read);
if(second =='/')
{
state = CPP_STATE;
fputc(first,write);
fputc(second,write);
//
}
elseif(second =='*')
{
fputc(first,write);
fputc('/',write);
state = C_STATE;
}
else
{
fputc(first,write);
fputc(second,write);
}
break;
caseEOF:
fputc(first,write);
state = END_STATE;
break;
default:
fputc(first,write);
break;
}
}
voidConvertWork(FILE*read,FILE*write)
{
state = NULL_STATE;
while(state != END_STATE)
{
switch(state)
{
caseNULL_STATE:
DoNullState(read,write);
break;
caseC_STATE:
DoCState(read,write);
break;
caseCPP_STATE:
DoCppState(read,write);
break;
}
}
}
voidCommentConvert()
{
FILE*pRead, *pWrite;
pRead = fopen(INPUTFILENAME,"r");
if(pRead ==NULL)
{
perror("INPUTFILENAME");
system("pause");
exit(EXIT_FAILURE);
}
pWrite = fopen(OUTPUTFILENAME,"w");
if(pWrite ==NULL)
{
perror(OUTPUTFILENAME);
fclose(pRead);
system("pause");
exit(EXIT_FAILURE);
}
ConvertWork(pRead, pWrite);
fclose(pRead);
fclose(pWrite);
}
测试部分
#define_CRT_SECURE_NO_WARNINGS1
#include"CommentConvert.h"
voidTest()
{
CommentConvert();
}
intmain()
{
Test();
system("pause");
return0;
}
input.c
output.c
利用状态机把此问题中涉及的分为3个状态,即C状态,C++状态,NULL状态,当遍历到某一个\n,/*,//时,要分情况这三个状态之间转换
0 0
- C注释转换到C++注释项目
- 【C项目】注释转换项目
- 【小项目】注释风格转换(从C语言注释风格转换到C++注释风格)
- 注释转换小项目(c注释->到c++注释)
- c语言项目-注释转换
- 【C语言项目】注释转换
- C/C++ 注释项目转换
- c语言注释转换项目
- 注释转换(c++注释到C注释)
- 注释转换(从c到c++)
- 注释转换项目(c->c++)
- 注释转换(c->c++)小项目
- 注释转换(C到C++的注释转换)
- C语言:C语言注释转换C++,注释转化项目C-->C++注释
- 注释转换<C注释-->C++注释>
- C语言小项目—注释转换( C注释转换为C++注释 )
- C语言项目:注释转换(C风格注释转换成C++风格注释)
- 小项目之C注释转换为C++注释状态
- 随笔提示文本
- 九九乘法表及其扩展
- 100~200之间的素数(及其四个优化方案)
- 交换两个变量的四种方案(面试题)
- 统计二进制中1的个数(四种方案)
- C注释转换到C++注释项目
- 冒泡排序(数组方法和指针方法)
- 单链表中查找倒数第K个节点
- 合并两个已序单链表
- 单链表的折半查找,冒泡排序,选择排序
- C++:继承
- UIWindow UIView UILable UIButton
- 指针和引用的区别
- Why? 在C++中调用被C编译后的函数,要在声明的前面加extern "C"