C语言_注释转换
来源:互联网 发布:大数据世界小说txt 编辑:程序博客网 时间:2024/06/05 00:55
C语言风格注释:
int a=0;/*这 是 注 释*/int b=0;
C++注释风格:
int a=0;//这 //是 //注 //释int b=0;
现写一个程序实现把所有注释全部转换为C++风格保存在另一个文档中。
首先一个一个读取转换,分为三种状态:
1.普通状态:普通代码 ——>{ 普通代码,C注释,C++注释}
2.C状态:C注释 ——>{ 普通代码,C注释,C++注释}
3.C++状态:C++注释 ——>{ 普通代码,C注释,C++注释}
为这三种状态间的转换写了三个函数实现功能:
普通状态:
void do_null_status(FILE *ifp, FILE *ofp){ int a = fgetc(ifp); fputc(a,ofp); if ((char)a == '/') { a = fgetc(ifp); if ((char)a == '/') { fputc(a, ofp); status = CPPSTATUS; } else if ((char)a == '*') { fputc('/', ofp); status = CSTATUS; } else if (a == EOF) { fputc(a, ofp); status = EOFSTATUS; } else { ungetc(a,ifp); } } else if (a == EOF) { fputc(a, ofp); status = EOFSTATUS; }}
C状态:
void do_c_status(FILE *ifp, FILE *ofp){ int a = fgetc(ifp); if (a == '*') { int b = fgetc(ifp); if (b == '/') { fputc('\n', ofp); status = NULLSTATUS; b = fgetc(ifp); if (b != '\n') { ungetc(b, ifp);; } } else if (b == '\n') { fputc(a, ofp); fputc(b, ofp); fputc('/', ofp); fputc('/', ofp); status = CSTATUS; } else if (a == EOF) { fputc(a, ofp); status = EOFSTATUS; } else { fputc(a, ofp); ungetc(b, ifp); } } else if(a == '\n') { fputc(a, ofp); fputc('/', ofp); fputc('/', ofp); } else if (a == EOF) { fputc(a, ofp); status = EOFSTATUS; } else { fputc(a, ofp); }}
C++状态:
这里写代码片
头文件:
#ifndef __CONVERT_COMMENT_H__#define __CONVERT_COMMENT_H__void convert_main();enum { NULLSTATUS, CSTATUS, CPPSTATUS, EOFSTATUS,};#endif //__CONVERT_COMMENT_H__
代码实现:
#include <stdio.h>#include "convert_comment.h"int status = NULLSTATUS;void do_cpp_status(FILE *ifp,FILE *ofp){ int a = fgetc(ifp); fputc(a, ofp); if (a == '\n') { status = NULLSTATUS; } else if (a == EOF) { status = EOFSTATUS; }}void do_null_status(FILE *ifp, FILE *ofp){ int a = fgetc(ifp); fputc(a,ofp); if ((char)a == '/') { a = fgetc(ifp); if ((char)a == '/') { fputc(a, ofp); status = CPPSTATUS; } else if ((char)a == '*') { fputc('/', ofp); status = CSTATUS; } else if (a == EOF) { fputc(a, ofp); status = EOFSTATUS; } else { ungetc(a,ifp); } } else if (a == EOF) { fputc(a, ofp); status = EOFSTATUS; }}void do_c_status(FILE *ifp, FILE *ofp){ int a = fgetc(ifp); if (a == '*') { int b = fgetc(ifp); if (b == '/') { fputc('\n', ofp); status = NULLSTATUS; b = fgetc(ifp); if (b != '\n') { ungetc(b, ifp);; } } else if (b == '\n') { fputc(a, ofp); fputc(b, ofp); fputc('/', ofp); fputc('/', ofp); status = CSTATUS; } else if (a == EOF) { fputc(a, ofp); status = EOFSTATUS; } else { fputc(a, ofp); ungetc(b, ifp); } } else if(a == '\n') { fputc(a, ofp); fputc('/', ofp); fputc('/', ofp); } else if (a == EOF) { fputc(a, ofp); status = EOFSTATUS; } else { fputc(a, ofp); }}void convert_main(){ FILE* ifp; FILE* ofp; ifp = fopen("001.c", "r"); ofp = fopen("002.c", "w"); if (ifp==NULL||ofp==NULL) { printf("NULL"); return; } while (status != EOFSTATUS) { switch (status) { case NULLSTATUS: do_null_status(ifp,ofp); break; case CSTATUS: do_c_status(ifp, ofp); break; case CPPSTATUS: do_cpp_status(ifp, ofp); break; default: break; } } fclose(ifp); fclose(ofp);}
主程序:
#include <stdio.h>#include <windows.h>#include "convert_comment.h"int main(){ convert_main(); return 0;}
转换前:
转换后:
阅读全文
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代码注释转换
- Oracle的账户信息
- 数据结构实验之图论八:欧拉回路
- Android SDK下载安装及配置教程
- PLA
- C#使用phantomjs对网页截图
- C语言_注释转换
- 程序员如何成为编程高手,并以此创业
- DuplicateHandle进程间句柄复制
- Python绘图介绍
- 月薪3万程序员告诉你,低效程序员的9个坏习惯
- Zookeeper概念及应用场景
- 【bzoj4488: [Jsoi2015]最大公约数】性质题
- 三级联动下拉框
- 硬盘数据丢失,到底该如何修复?