贴代码,求点评,以完善编程的习惯和细节
时间:2010-08-18
来源:互联网
- # #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;
- # }
作者: roolcz 发布时间: 2010-08-18

作者: lenky0401 发布时间: 2010-08-18
有的行太长,最好不要超过80个字符,超过了就要换行。
作者: jackin0627 发布时间: 2010-08-18
argv[1][n-2]='\0';//截取输入文件名,并且不要后缀名
你认为扩展名肯定是一个字符?而且不要去修改argv
Fp_delnote[n+8];这里不够1字节
处理部分懒得看了
你认为扩展名肯定是一个字符?而且不要去修改argv
Fp_delnote[n+8];这里不够1字节
处理部分懒得看了
作者: hellioncu 发布时间: 2010-08-18
QUOTE:
argv[1][n-2]='\0';//截取输入文件名,并且不要后缀名
你认为扩展名肯定是一个字符?而且不要去修改argv
...
hellioncu 发表于 2010-08-18 11:59
你认为扩展名肯定是一个字符?而且不要去修改argv
...
hellioncu 发表于 2010-08-18 11:59
扩展名的确不一定是一个字符,我没考虑全,的确也不该修改argv,谢谢指教哈,,
对了,不够一个字节是什么意思?我不懂?这个有何诀窍是不是和内存对齐之类有关系?
作者: roolcz 发布时间: 2010-08-18
QUOTE:
扩展名的确不一定是一个字符,我没考虑全,的确也不该修改argv,谢谢指教哈,,
对了,不够一个字节是什 ...
roolcz 发表于 2010-08-18 13:06
对了,不够一个字节是什 ...
roolcz 发表于 2010-08-18 13:06
空间不够放下你的结果文件名,少了放结束符的
作者: hellioncu 发布时间: 2010-08-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28