您的位置:首页 > 编程语言 > C语言/C++

注释转换(c语言->c++)

2017-12-07 20:53 162 查看
convert.h 文件

#ifndef CONVERT_H
#define CONVERT_H

#define INPUTFILE  "inputfile.c"
#define OUTPUTFILE  "outfile.c"

enum {
null_status,c_status,cpp_status,eof_status,
}status;

void convert();
#endif // !CONVERT_H


convert.c文件

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include"convert.h"
void do_null_status(FILE *ifp, FILE *ofp)    //进行状况监测  (1)  /*  (2) //   (3)  eof
{
int c = fgetc(ifp);
switch (c)
{
case '/':
{
int s = fgetc(ifp);
switch (s)
{
case '*':
fputc('/', ofp);
fputc('/', ofp);
status = c_status;
break;
case '/':
fputc('/', ofp);
fputc('/', ofp);
status = cpp_status;
break;
case EOF:
fputc('/', ofp);
status = eof_status;
break;
default:
fputc(c, ofp);
ungetc(s, ifp);
break;
}
break;
case EOF:
status = eof_status;
break;
default:
fputc(c, ofp);
status = null_status;
break;
}
}
}
void do_c_status(FILE *ifp, FILE *ofp)  // 处理三种情况  (1)  /*    -----   */
//              (2)  /*     ----
{                                       //                          ----     */
int c = fgetc(ifp);                 //              (3)  /*    ----
//                           -----
switch (c)
{
case '*':
{
int s = fgetc(ifp);
switch (s)
{
case '/':
status = null_status;
break;
case '\n':
fputc('\n', ofp);
fputc('/', ofp);
fputc('/', ofp);
break;
case EOF:
status = eof_status;
break;
default:
fputc(c, ofp);
fputc(s, ofp);
break;
}
break;
}
case '\n':
fputc('\n', ofp);
fputc('/', ofp);
fputc('/', ofp);
break;
case EOF:
status = eof_status;
break;
default:
fputc(c, ofp);
status = c_status;
break;
}

}
void do_cpp_status(FILE *ifp, FILE *ofp)    // 处理一种情况   :(1)   //  ------
{
int c = fgetc(ifp);
switch (c)
{
case '\n':
fputc(c, ofp);
status = null_status;
break;
default:
fputc(c, ofp);
break;
}
}
void convert()
{
FILE *ifp = fopen(INPUTFILE, "r");
if (NULL == ifp)
{
perror("open file error");
fclose(ifp);
}
FILE *ofp = fopen(OUTPUTFILE, "w");
while (!feof(ifp))
{
switch (status)           //status未初始化,默认值为0
{
case null_status:
do_null_status(ifp, ofp);
break;
case c_status:
do_c_status(ifp, ofp);
break;
case cpp_status :
do_cpp_status(ifp, ofp);
break;
case eof_status:
break;
default :
break;
}
}
fclose(ifp);
fclose(ofp);
}


main.c文件

#include<stdio.h>

#include"convert.h"
int main()
{
convert();

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 enum cpp