1、少了很多大括号,包括while的,if else的
2、while(feof(fp1)!=EOF) 最好改为while(!feof(fp1))
3、我改后测了一下,这个程序只能删除“/* */”的注释,对“//”的注释无效。再改一下状态机吧。
4、下面的程序我把格式整理了一下,没改什么算法部分。写程序要规范。
#include "stdio.h"
void delcomm(FILE*fp1,FILE*fp2)
{
char c;
int i=0;
while(!feof(fp1))
{
printf("test\n");
if((c=fgetc(fp1))=='\n')
fprintf(fp2,"\n");
else
{
switch(i)
{
case 0:
if (c=='/')
i=1;
else
fprintf(fp2,"%c",c);
break;
case 1:
if (c=='*')
i=2;
else
{
fprintf(fp2,"/%c",c);
i=0;
}
break;
case 2:
if (c=='*')
i=3;
break;
case 3:
i=(c=='/')?0:2;
break;
}
}
}
}
int main()
{
FILE*fp1,*fp2;
if ((fp1=fopen("/home/hxl/test/md5.c","r"))==NULL)
{
printf("wrong!");
exit(0);
}
fp2=fopen("/home/hxl/test/md5out.c","w");
delcomm(fp1,fp2);
fcloseall();
}