简单的注释转换
来源:互联网 发布:胜通软件 编辑:程序博客网 时间:2024/06/05 03:22
CommentConvert.h
#ifndef __COMMENT_CONVERT_H__
#define __COMMENT_CONVERT_H__
//#define INPUTNAME "input.c"
//#define OUTPUTNAME "output.c"
#include<stdio.h>
#include<stdlib.h>
enum STATE
{
NUL_STATE,
C_STATE,
CPP_STATE,
END_STATE
};
void DoConvertWork(FILE* pfIn,FILE* pfOut);
void DoNulState(FILE* pfIn,FILE* pfOut);
void DoCState(FILE* pfIn,FILE* pfOut);
void DoCppState(FILE* pfIn,FILE* pfOut);
#endif
CommentConvert.c
#include"CommentConver.h"
enum STATE state=NUL_STATE;
void DoNulState(FILE* pfIn,FILE* pfOut)
{
int first=0;
int second=0;
first=fgetc(pfIn);
switch(first)
{
case '/':
{
second=fgetc(pfIn);
if(second=='*')
{
fputc('/',pfOut);
fputc('/',pfOut);
state=C_STATE;
}
else if(second=='/')
{
fputc(first,pfOut);
fputc(second,pfOut);
state=CPP_STATE;
}
else
{
fputc(first,pfOut);
fputc(second,pfOut);
}
}
break;
case EOF:
state=END_STATE;
default:
fputc(first,pfOut);
break;
}
}
void DoCState(FILE* pfIn,FILE* pfOut)
{
int first=0;
int second=0;
int third=0;
first=fgetc(pfIn);
switch(first)
{
case '*':
{
second=fgetc(pfIn);
switch(second)
{
case '*':
third=fgetc(pfIn);
fputc(first,pfOut);
if(third=='/')
{
state=NUL_STATE;
}
break;
case '/':
third=fgetc(pfIn);
if(third!='\n')
{
fputc('\n',pfOut);
}
if(third=='/')
{
ungetc('/',pfIn);
state=NUL_STATE;
break;
}
fputc(third,pfOut);
state=NUL_STATE;
break;
default:
fputc(first,pfOut);
fputc(second,pfOut);
break;
}
break;
case '\n':
fputc('\n',pfOut);
fputc('/',pfOut);
fputc('/',pfOut);
break;
case EOF:
state=END_STATE;
break;
default:
fputc(first,pfOut);
break;
}
}
}
void DoCppState(FILE* pfIn,FILE* pfOut)
{
int first=0;
first=fgetc(pfIn);
switch(first)
{
case '\n':
fputc(first,pfOut);
state=NUL_STATE;
break;
case EOF:
state=END_STATE;
break;
default:
fputc(first,pfOut);
break;
}
}
void DoConvertWork(FILE* pfIn,FILE* pfOut)
{
while(state!=END_STATE)
{
switch(state)
{
case NUL_STATE:
DoNulState(pfIn,pfOut);
break;
case C_STATE:
DoCState(pfIn,pfOut);
break;
case CPP_STATE:
DoCppState(pfIn,pfOut);
break;
case END_STATE:
break;
default:
break;
}
}
}
test.c
#include"CommentConver.h"
#include<windows.h>
int main()
{
FILE *PfIn=NULL;
FILE *PfOut=NULL;
printf("转换开始\n");
PfIn=fopen("input.c","r");
if(NULL==PfIn)
{
perror("open file for read");
exit(0);
}
PfOut=fopen("output.c","w+");
if(NULL==PfOut)
{
fclose(PfIn);
perror("open file for write");
exit(0);
}
DoConvertWork(PfIn,PfOut);
printf("转换结束\n");
fclose(PfIn);
fclose(PfOut);
system("pause");
return 0;
}
- 简单的注释转换
- C->C++注释转换的简单实现
- 简单小项目:注释转换
- Doxygen 的简单注释
- c注释向c++注释的转换
- C/C++的注释转换
- 注释转换(C到C++的注释转换)
- 简单的汇编实例注释
- C语言的注释与C++注释的转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- 注释转换
- centos 7 软件安装目录选择
- 关于makefile的解释
- 简单的DOM获取
- 24点游戏
- c/c++整理--字符串(2)
- 简单的注释转换
- windows环境下配置php和redis
- 安卓如何对外置设备进行读写操作
- 2017年4月12日工作日记
- Hadoop2.7.1 mapreduce in c++ 词频统计
- 哈希算法---Snowflake Snow Snowflakes
- HTTP状态码
- IntelliJ IDEA——SVN的配置及使用
- 项目开始 第一天 (MVC模式 数据库连接)