c语言-注释转换
2018-01-13 18:58
155 查看
用c语言实现一个简单的功能-注释转换
首先要了解两种简单的注释形式:
c风格注释:/* */
c++风格注释://
效果如下图所示:
用几张图来说明思路:
首先是两个文件的引入:
各种状态间的转换:
对获取字符的各种可能性判断:
实现代码如下:
首先要了解两种简单的注释形式:
c风格注释:/* */
c++风格注释://
效果如下图所示:
用几张图来说明思路:
首先是两个文件的引入:
各种状态间的转换:
对获取字符的各种可能性判断:
实现代码如下:
#include <stdio.h> #include <stdlib.h> #include "convert.h" #pragma warning(disable:4996) enum status Status = NULstatus; void do_Null(FILE *infile, FILE *outfile) { int first = fgetc(infile); int second;//case里不定义变量 switch (first) { case '/': second = fgetc(infile); switch (second) { case '*': fputc('/', outfile); fputc('/', outfile); Status = Cstatus; break; case '/': fputc('/', outfile); fputc('/', outfile); Status = CPPstatus; break; default: ungetc(second,infile); break; } break; case EOF: Status = EOFstatus; break; default: fputc(first, outfile); Status = NULstatus; break; } } void do_Cpp(FILE *infile, FILE *outfile) { int first = fgetc(infile); switch (first) { case '\n': fputc('\n', outfile); Status = NULstatus; break; case EOF: Status = EOFstatus; break; default: fputc(first, outfile); Status = CPPstatus; break; } } void do_C(FILE *infile, FILE *outfile) { int first = fgetc(infile); int next; switch (first) { case '*': { int second = fgetc(infile); switch (second) { case '/': { next = fgetc(infile); if (next == '\n') { ; } else { fputc('\n', outfile); ungetc(next, infile); } Status = NULstatus; break; } case'*': next = fgetc(infile); fputc(first, outfile); if (next == '/') { Status = NULstatus; } break; default: fputc(first, outfile); ungetc(second, infile); Status = Cstatus; break; } } break; case '\n': fputc('\n', outfile); fputc('/',outfile); fputc('/', outfile); Status = Cstatus; break; case EOF: Status = EOFstatus; break; default: fputc(first, outfile); Status = Cstatus; break; } } static void convert_worker(FILE *infile, FILE *outfile) { while (Status != EOFstatus) { switch (Status) { case NULstatus: do_Null(infile, outfile); break; case CPPstatus: do_Cpp(infile, outfile); break; case Cstatus: do_C(infile, outfile); break; case EOFstatus: break; default: break; } } } void comment_convert(const char *input, const char *output) { FILE *infile = fopen(input, "r"); if (NULL == infile) { fprintf(stderr, "open file %s for read error!\n", input); return; } FILE *outfile = fopen(output, "w+"); if (NULL == outfile) { fprintf(stderr, "open file %s for read error!\n", output); fclose(infile); exit(EXIT_FAILURE); } convert_worker(infile, outfile); fclose(outfile); }
相关文章推荐
- 注释转换(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语言写的注释转换