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;
}