- 论坛徽章:
- 0
|
- # #include <stdio.h>
- # #include <string.h>
- # //本程序的功能是将C语言源码文件中的注释删除掉,并把新得到的源码文件保存为filename_delnote.c
- # //最后完成于2010年4月7日03:37,总耗时6小时,郁闷来着。
- # //作者rool,oh yeah.
- # void delnote(FILE *p,FILE *p_note)
- # {
- # int flag=0;
- # char w_start,w_end;
- # w_start=fgetc(p);
- # w_end=w_start;
- # while(w_end!=EOF)
- # {
- # w_end=fgetc(p);
- # switch(flag) //flag的值,0表示字符是最普通的代码,1表示字符处于“”中,2表示字符是被//注释掉的,3表示字符是被/*--*/注释掉的
- # {
- # case 0:
- # {
- # switch(w_start)
- # {
- # case '/':
- # {
- # if(w_end=='*')
- # {
- # flag=3;
- #
- # }
- # else if(w_end=='/')
- # {
- # flag=2;
- # }
- # else fputc(w_start,p_note);
- # } break;
- # case '\"':
- # {
- # flag=1;
- # fputc(w_start,p_note);
- # } break;
- # default :fputc(w_start,p_note);
- # }
- # } break;
- # case 1:
- # {
- # if(w_start=='\n'||w_start=='\"')
- # {
- # flag=0;
- # }
- # fputc(w_start,p_note);
- # } break;
- # case 2:
- # {
- # if(w_start=='\n')
- # {
- # flag=0;
- # fputc(w_start,p_note);
- # }
- # } break;
- # case 3:
- # {
- # if(w_start=='*'&&w_end=='/')
- # {
- # flag=0;
- # w_end=fgetc(p);
- # }
- # } break;
- # default :break;
- # }
- # w_start=w_end;
- # }
- # }
- # int main(int argc,char *argv[])
- # {
- # if(argv[1]==NULL)
- # {
- # printf("---->You must give the filename follow the command!\n");
- # printf("---->你没有指定需要操作的文件名\n");
- # printf("---->Just like this style:\n\tdelnote filename.c\n");
- # printf("---->You can try it again\n");
- # return 1;
- # }
- # FILE *fp,*fp_delnote;
- # fp=fopen(argv[1],"r");
- # if(fp==NULL)
- # {
- # printf("Can't find the file %s or you do not have the permision to open this file\n",argv[1]);
- # return 2;
- # }
- # printf("---->Be patient,the note of %s are being remove...\n",argv[1]);
- # int n;
- # n=strlen(argv[1]);
- # char Fp_delnote[n+8];
- # argv[1][n-2]='\0';//截取输入文件名,并且不要后缀名
- # char *a="_delnote.c";
- # strcpy(Fp_delnote,argv[1]);
- # strcat(Fp_delnote,a);//得到去掉注释后的输处文件名,形如filename_name.c
- # fp_delnote=fopen(Fp_delnote,"w");
- # delnote(fp,fp_delnote);
- # fclose(fp);
- # fclose(fp_delnote);
- # printf("---->Good,all of the work have done.\n");
- # return 0;
- # }
复制代码 |
|