C语言的注释与C++注释的转换
来源:互联网 发布:windows更新消失 编辑:程序博客网 时间:2024/05/22 12:35
本博客主要考虑以下几种情况,可能有的地方没有考虑到,望读者指出。
// 1.一般情况
/* int i = 0; */
// 2.换行问题
/* int i = 0; */int j = 0;
/* int i = 0; */
int j = 0;
// 3.匹配问题
/*int i = 0;/*xxxxx*/
// 4.多行注释问题
/*
int i=0;
int j = 0;
int k = 0;
*/int k = 0;
// 5.连续注释问题
/**//**/
// 6.连续的**/问题
/***/
// 7.C++注释问题
// /*xxxxxxxxxxxx*/
以下为主要代码:
主函数:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include "AnnotationConver.h"int main(){AnnotationConver("input.c", "output.c");system("pause");return 0;}
AnnotationConver.h:
#pragma oncetypedef enum State{C_BEGIN,C_END,}State;void AnnotationConver(const char *inputFile,const char *outputFile);
AnnotationConver.c:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <assert.h>#include "AnnotationConver.h"static void Convert(FILE *fIn, FILE *fOut){assert(fIn);assert(fOut);char first = 0;char second = 0;State tag = C_END;do{first = fgetc(fIn);switch (first){case '/':second = fgetc(fIn);if (second == '*'){if (tag == C_END){fputc('/', fOut);fputc('/', fOut);tag = C_BEGIN;}else{fputc(first, fOut);fputc(second, fOut);}}else if (second == '/'){fputc('/', fOut);fputc('/', fOut);char next = fgetc(fIn);while (next != '\n'&& next != EOF){fputc(next, fOut);next = fgetc(fIn);}if (next == '\n'){fputc(next, fOut);}}else{fputc(first, fOut);fputc(second, fOut);}break;case '\n':if (tag == C_BEGIN){fputc(first, fOut);fputc('/', fOut);fputc('/', fOut);}else{fputc(first, fOut);}break;case '*':second = fgetc(fIn);if (second == '/'){//换行问题char next = fgetc(fIn);/*连续注释*/if (next == '/'){fseek(fIn, -1, SEEK_CUR);}/*换行问题*/else{if (next != '\n'&& next != EOF){fputc('\n', fOut);}if (next != EOF){fputc(next, fOut);}}tag = C_END;}/*连续的**问题*/else if (second == '*'){fputc(second, fOut);fseek(fIn, -1, SEEK_CUR);}else{fputc(first, fOut);fputc(second, fOut);}break;default:if (first != EOF){fputc(first, fOut);}break;}} while (first != EOF);}void AnnotationConver(const char *inputFile,const char *outputFile){assert(inputFile);assert(outputFile);FILE *fIn = fopen(inputFile,"r");if (fIn == NULL){printf("打开文件%s失败! errno: %d\n", inputFile, errno);return;}FILE *fOut = fopen(outputFile, "w");if (fOut == NULL){fclose(fIn);printf("打开文件%s失败! errno: %d\n", outputFile, errno);return;}Convert(fIn, fOut);fclose(fIn);fclose(fOut);}
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语言项目】注释转换
- 冒泡排序函数,可以给任意类型的数据排序,比如整形数组,字符数组,字符串数组等
- 快速排序函数的比较函数
- 网卡驱动程序设计---网络子系统深入分析以及DM9000网卡驱动实现
- 二叉树 的先序 中序、后序遍历、层次遍历以及树状打印等操作
- C语言利用结构体实现一个通讯录
- C语言的注释与C++注释的转换
- 两个链表的合并
- 单链表的操作
- 单继承与多继承中的虚函数表和虚函数指针
- Hyper-V Server故障转移群集安装
- C++虚继承中的对象内存布局
- 智能指针的模拟实现 auto_ptr scoped_ptr shared_ptr
- [并查集 树] BZOJ 4551 [Tjoi2016&Heoi2016]树
- 智能指针的模拟实现shared_ptr 循环引用 定置删除器