小项目_注释转换_c
来源:互联网 发布:3d样板房软件 编辑:程序博客网 时间:2024/06/06 03:58
我们用3部分来实现。
逻辑和条理清晰。
.h 部分
#ifndef __test_h__ //定义#define __test_h__#include <stdio.h>#include <stdlib.h>#define INPUT "input.c" #define OUTPUT "output.c"enum KIND //枚举表示操作选项{END_START,NULL_START,C_START,CPP_START,};void note_convert(FILE *pfin,FILE *pfout);//注释转化操作函数void null_state(FILE *pfin,FILE *pfout,enum KIND *sta);//普通字符转换函数void c_state(FILE *pfin,FILE *pfout,enum KIND *sta);//c语言注释转换为c++注释函数void cpp_state(FILE *pfin,FILE *pfout,enum KIND *sta);//c++注释转化函数#endif
主函数部分
#include "test.h"int main(){FILE *pfout = NULL; //定义文件指针 输出FILE *pfin = NULL;pfin = fopen(INPUT,"r");//打开文件(命令)if(pfin == NULL){perror("not open file"); //提示错位原因exit(EXIT_FAILURE); //失败的宏定义显示}pfout = fopen(OUTPUT,"w"); //写入文件if(pfout == NULL){perror("not open file ");fclose(pfin);exit(EXIT_FAILURE);}note_convert(pfin,pfout); //调用注释转换函数system("pause");return 0;}
#include "test.h"void note_convert(FILE *pfin,FILE *pfout)//注释转化操作函数{int input = 0;int output = 0;enum KIND sta = NULL_START;while (sta != END_START){switch (sta){case NULL_START:null_state(pfin,pfout,&sta);break;case C_START:c_state(pfin,pfout,&sta);break;case CPP_START:cpp_state(pfin,pfout,&sta);break;case END_START:break;default:break;}}printf("converted! ");fclose(pfin);fclose(pfout);}void null_state(FILE *pfin,FILE *pfout,enum KIND *sta)//普通字符转换函数{int _f = 0;int _s = 0;_f = fgetc(pfin);//从intput.c文件中读取一个字符switch(_f){case '/':{fputc(_f ,pfout);//将第一个字符输出到output.c文件中_s = fgetc(pfin);//读取下一个字符switch(_s){case '*': //如果是 ‘/*’ 就将‘ *’ 改为 ‘/’ 放入 output.c中fputc('/',pfout);*sta = C_START; // 进入C语言注释转换函数中break;case '/': //如果是// 将_s 输出到output.c 文件中fputc(_s,pfout);*sta = CPP_START; // 进入cpp注释转换函数中break;default :fputc(_s,pfout);break;}}case EOF: //读取到了文件末尾fputc(_f,pfout);*sta = END_START;break;default: //其他字符fputc(_f,pfout);break;}}void c_state(FILE *pfin,FILE *pfout,enum KIND *sta)//c语言注释转换为c++注释函数{int _f = 0;int _s = 0;int _t = 0;_f = fgetc(pfin);switch(_f){case '/':fputc(_f,pfout);break;case '*':_s = fgetc(pfin);switch(_s){case '*':fputc(_f,pfout);ungetc(_s,pfin);// 将之后的内容放到缓存区break;case '/':{_t = fgetc(pfin);//判断第三个字符是不是“\n”解决这种注释问题 /*int i=0*/int i=0;*sta = NULL_START;if(_t =='\n'){fputc('\n',pfout);}else{fputc('\n',pfout);ungetc(_t,pfin);}break;}default:fputc(_f,pfout);fputc(_s,pfout);break;}break;case '\n': {_s = fgetc(pfin);switch(_s){case '*':{_t = fgetc(pfin);if(_t == '/'){fputc('\n',pfout);*sta = NULL_START;}else{fputc('/',pfout);fputc('/',pfout);fputc(_s,pfout);fputc(_t,pfout);}break;}default:fputc('\n',pfout);fputc('/',pfout);fputc('/',pfout);ungetc(_s,pfin);break;}break;}default:fputc(_f,pfout);break;}}void cpp_state(FILE *pfin,FILE *pfout,enum KIND *sta)//c++注释转化函数{int _f = 0;_f = fgetc(pfin);switch(_f){case '\n':{fputc(_f , pfout);*sta = NULL_START;break;}default:{fputc(_f,pfout);break;}}}
0 0
- 小项目_注释转换_c
- 小项目 | 注释转换
- 简单小项目:注释转换
- 注释转换(C++小项目)
- C语言小项目—注释转换
- 小项目之注释的转换
- c语言小项目----注释转换
- 注释转换——(小项目)
- C语言小项目---注释转换
- 注释转换(c->c++)小项目
- C语言小项目-注释转换
- c语言小项目---注释转换
- C/C++小项目之注释转换
- C的小项目:注释转换
- C语言小项目--注释转换
- 小项目之C注释转换为C++注释状态
- C注释转换为C++注释小项目
- 实用小项目_货币转换
- java高级2
- AsyncTask的使用
- 【Spring】Spring的AOP术语解释
- eclipse 下tomcat内存溢出
- jdbc
- 小项目_注释转换_c
- UVA 11732 "strcmp()" Anyone(字典树+左儿子-右兄弟表示法)
- 函数的参数为引用和指针的区别
- code forces 1A
- 两个有序数组求中位数
- Linux下静态库和动态库
- margin在多栏布局上的应用
- Java内部类详解
- C#并行编程-Task