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

来源:互联网 发布:离家出走知乎 编辑:程序博客网 时间:2024/05/22 10:37

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;}
原创粉丝点击