ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:201.58KB ,
资源ID:12370773      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12370773.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编写一个C语言代码美化程序课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编写一个C语言代码美化程序课程设计.docx

1、编写一个C语言代码美化程序课程设计吉首大学 Jishou University 课 程 设 计题 目:编写一个C语言代码美化程序 作 者: 学 号: 所属院系:数学与计算机科学学院 专业年级: 09级网络工程 指导老师: 职称: 时 间: 2010年10月17日-10月24日 目录一、摘要二、需求分析三、概要分析四、源代码详细分析及测试五、总结六、参考文献 编写一个C语言代码美化程序一、摘要 题目要求:编写一个C语言代码美化程序,能处理符合语法的C代码,进行重新排版,使之更加美观易读。设计要求:(1) 程序采用字符界面(2)显示功能菜单,用户指定键即可进入相应功能(3) 可由用户选择输入文件(

2、.c文件),程序对它进行格式化(4) 将修改以后的文件输出到另一个.c文件开发语言与环境:C语言是目前世界上流行、使用最广泛的高级程序设计语言。它是一种结构化语言,层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位一级的操作。因此,我们这次使用的开发平台为VC+6.0,采用的高级语言为c语言。二、需求分析当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息系统的环境。计算机的最到好处的于利用它能够进行信息管理,使用计算机进行信息

3、控制,不仅提高了工作效率,而且大大的提高了其安全性。C/C+语言无疑是当今嵌入式开发中最为常见的语言。但其中对于C/C+语言代码的书写是一个令人头痛的问题,很多程序员尤其是新手写出来的C/C+源程序代码让人感觉杂乱无章,给人一种很不好的印象。甚至几个月后自己对自己编写的C/C+源程序代码都看不懂。针对这一种情况,我们认为编写一个美化C/C+代码的美化工具很有必要性,该程序可以快速的对乱糟糟的代码进行自动排版,让程序看起来更符合规范,更加符合大家的习惯,看起来不那么费力。让程序起到很好的美化效果,并且不改动原来程序的功能。编制这样一个程序,对大家一定可以起到很大的帮助。 这次的小程序,我们小组人

4、员的分工如下:谭向宏:完成了两个主要子函数的编制;吴方朴:对主函数的调试,调用函数;刘晖:搜集资料,做测试实例,测试。大家的共同合作下,完成了这一小程序,过程虽艰苦,但收获颇丰。3、概要分析:C程序美化流程图 N Y N Y这次的美化代码程序,定义并调用了两个被调函数,由主函数调用完成。函数的大致流程如下:首先输入要美化的c原文件的文件名,用读写方式打开该文件,然后用只写方式打开另一文件,若文件不存在则会新建一文件,然后调用函数readin按行读取数据,并将读取的数据放入定义的全局变量数组中,用函数check 找到关键符号,在输出的同时做换行加空格等操作,对文件进行美化。美化完成后,关闭两个文

5、件 ,一个美化文件过程便完成了。四、源代码详细说明及测试 1、代码详细说明:原理:对于美化代码,无非是对不整齐的代码将它重新排版对齐,其中就是要对原文件的代码去除空格以及多余的字符之类的,从而起到美化的效果,为了达到这种功能,我们定义了函数进行相关的操作 首先确定所需要的函数模块:第一部分是主函数部分:void main()第二部分是按行读出的模块部分:int readln(FILE *fp) 第三部分是符号查找匹配部分: char * check(char str,char tar) 第一部分:主函数部分,主要代码及分析如下:void main() FILE *infp,*outfp; /设

6、置文件指针 char *p,fn64; int j; printf部分:字符界面设置; scanf(%s,fn); /输入你要修改的文件名; infp=fopen(fn,r+); /应用读写方式打开输入的文件; if(infp=NULL) /若打开文件失败 ,报错; printf(文件夹打开错误,请重新输入.n); return; outfp=fopen(tempwenjian.c,w); /为输出打开一个文件,若不存在该文 件自动新建生成一文件名为tempwenjian.c的文件; if(outfp=NULL) /若打开文件失败,报错; printf(不能创建文件夹.n); return;

7、这部分的while循环是精华部分,涉及到了函数的调用; while(readln(infp)!=EOF_REACHED) /调用readln函数,若函数返回值不是0,做循环 ; p=check(strl,); /调用函数,查找符号 : if(p!=NULL) /查找成功 magin-; fprintf(outfp,n); /在符号之前输出换行符; for(j=0;jmagin;j+) fprintf(outfp, ); fprintf(outfp,%s,strl); /在tempwenjian.c文件中,以字符串格式输出 该行数据 ; p=check(strl,); /调用函数,查找符号 :

8、if(p!=NULL) /查找成功 magin+; fprintf(outfp,n); /在之后输出换行符; fprintf(outfp,n); /最后输出换行符; printf(恭喜您,美化代码成功!n); fclose(infp); /关闭原文件; fclose(outfp); /关闭出入文件; 第二部分:按行读出的模块部分:在原始的代码中,及自己输入文件名的那个原文件中,按行读出字符 ,刚放入全局变量数组str1中。细节及详细解释如下:Int readln(FILE *fp) / /按行读取数据,以文件类型指针接收输入的 待美化的文件; int i=0,j=0; register int

9、 c; while(!feof(fp) /当文件未结束,作while循环; c=fgetc(fp); /从文件读入一个字符,赋给c变量; strli=c; /把该 读入的字符赋给要输出的数组; if(c!= &c!=t) j=1; /如果读入的该字符不是空格且不是一个水平制表,就令 j=1;表示读入的该字符为一个有效字符; i+=j; /如果读入的字符为有效字符,i加1;if(c=n) /如果读入的该字符为一换行符,即该行数据已读完毕,使该输出数据为空字符; strli=0; return READ_OK; /该行读入完毕,且该行撤消了换行操作,返回主调函数,带回数据1; /读完某一行时结束,

10、循环结束; magin=i; if(i) /如果文件只有一行,继续执行以下操作: strli-1=n; /若文件只有一行 ,在结尾处执行换行操作; strli=0; return EOF_LINE; /返回主调函数,带回数据2; else return EOF_REACHED;第三部分:符号查找匹配部分:char * check(char str,char tar) /被调函数,是一个返回字符指针的函数,用来查找; register int i=0,c; static int status=CODE; /令status=0; do c=stri; /在存储的该行字符中,第i个字符赋给 c,即从

11、第一个字母开始查找匹配 的符号; switch(c) case :switch(status) case CODE: status=QUOTE;break; /“后若为开始,把status重新赋值为1,不满足status=0,需要继续循环; case SLASHinQUOTE: status=CODE;break; /否则就把status重新归为code 0; case QUOTE: status=CODE;break; break; case :switch(status) case QUOTE:status=SLASHinQUOTE;break; /如果c为 ,status=1,则把sta

12、tus的值赋为2,不满足status=0,继续循环; break; case n:switch(status) case LINEQ:status=CODE;break; /如果c为换行符,且status=5,则把status归零; break; case :switch(status) case CODE:status=QUOTE2;break; /如果c为字符,status为0时,status改赋值为3,不满足status=0,继续循环, case QUOTE2:status=CODE;break; / 如果c为字符,当status为3时,即,下一次循环到来时,status归零; brea

13、k; case /:switch(status) case CODE:status=SLASH;break; /如果c为字符/,status为0时,status改赋值为4,不满足status=0,继续循环 case SLASH:status=LINEQ;break; /如果c为字符/,status为4时,status改赋值为5,不满足status=0,继续循环 case PARAQ:status=CODE;break; / 如果c为字符,status为5时,即,下一次循环到来时,status归零; break; case *:switch(status) case SLASH:status=P

14、ARAQ;break; /如果c为*,且status=6,则把status归零; break; default: switch(status) case SLASH:status=CODE;break; /对于c以上情况均不满足,如果status=4,则归零; if(c=tar&status=CODE) /找到了相匹配的字符且status=0 return str+i; /如是找到了匹配的字符,就返回匹配的字符的地址; i+; while(c);return NULL;2、运行与调试程序运行画面代码printf( 吉首大学课程设计C语言美化程序n);printf(C Program beaut

15、ifiern);printf(*n);printf(*制作人:谭向宏、吴方朴、刘辉*n);printf(*n);printf(请输入您需要美化的C文件:);其中包括程序的主题C语言美化程序,包括制作人,输入提示的操作。运行的画面如下: 图1 箭头所示为输入C文件的名称下面我们对一个杂乱的C代码进行美化操作操作前的效果图如下: 图2以上为一段简单的密码C代码,初看起来给人的感觉特别混乱,杂乱无章,给人很不好的感觉以下的代码是经过C程序美化后的效果: 图3 以上给人的感觉比较舒服,没有前面的那种杂乱感了 2、操作错误的提示界面: 图4 3、当们在输入C文件的地方,随意输入一个不存在或者错误的C文件

16、名字时,就会出现以下界面: 图5系统会提示您文件夹打开错误,请重新输入按任意键取消对话框 4、当您输入正确的C文件时 图6操作界面如下: 图7 系统将会提示您,恭喜您,美化代码成功!当C文件被美化后,将会以一个新的文件temp.c的文件作为修改后的文件,即为我们所需要的最终文件3、完整源代码如下:#include #include #include#define EOF_REACHED 0#define READ_OK 1#define EOF_LINE 2/各种状态:#define CODE 0 / c code#define QUOTE 1 / #define SLASHinQUOTE 2

17、 / ? #define QUOTE2 3 / #define SLASH 4 / /#define LINEQ 5 / /#define PARAQ 6 / /*/char strl128; /存储输出数据的数组;int magin;char * check(char str,char tar) /*被调函数,是一个返回字符指针 的函数,用来查找;*/ register int i=0,c; static int status=CODE; /令status=0; do c=stri; /*在存储的该行字符中,第i个字符赋给 c,即从 第一个字母开始查找匹配的符号;*/ switch(c) c

18、ase :switch(status) case CODE: status=QUOTE;break; /“后若为开始,把status重新赋值为1,不满足status=0,需要继续循环; case SLASHinQUOTE: status=CODE;break; /否则就把status重新归为code 0; case QUOTE: status=CODE;break; break; case :switch(status) case QUOTE:status=SLASHinQUOTE;break; /如果c为 ,且status=1,则把status的值赋为2,不满足status=0,继/续循环;

19、 break; case n:switch(status) case LINEQ:status=CODE;break; /如果c为换行符,且status=5,则把status归零; break; case :switch(status) case CODE:status=QUOTE2;break; /如果c为字符,当status为0时,把status改赋值为3,不满足status=0,/继续循环, case QUOTE2:status=CODE;break; / 如果c为字符,当status为3时,即,下一次循环到来时,status归零; break; case /:switch(status

20、) case CODE:status=SLASH;break; /如果c为字符/,当status为0时,status改赋值为4,不满足status=0,/继续循环 case SLASH:status=LINEQ;break; /如果c为字符/,当status为4时,status改赋值为5,不满足status=0,/继续循环 case PARAQ:status=CODE;break; / 如果c为字符,当status为5时,即,下一次循环到来时,status归零; break; case *:switch(status) case SLASH:status=PARAQ;break; /如果c为*

21、,且status=6,则把status归零; break; default: switch(status) case SLASH:status=CODE;break; /对于c以上情况均不满足,如果status=4,则归零; if(c=tar&status=CODE) /找到了相匹配的字符且status=0 return str+i; /如是找到了匹配的字符,就返回匹配的字符的地址; i+; while(c);return NULL;int readln(FILE *fp) /按行读取数据,以文件类型指针接收输入的 待美化的文件; int i=0,j=0; register int c; wh

22、ile(!feof(fp) /当文件未结束,作while循环; c=fgetc(fp); /从文件读入一个字符,赋给c变量; strli=c; /把该 读入的字符赋给要输出的数组; if(c!= &c!=t) j=1; /如果读入的该字符不是空格且不是一个水平制表, /就令 j=1;表示读入的该字符为一个有效字符; i+=j; /如果读入的字符为有效字符,i加1;if(c=n) /如果读入的该字符为一换行符,即:该行数据已读完 /毕,使该输出数据为空字符; strli=0; return READ_OK; /该行读入完毕,且该行撤消了换行操作, /返回主调函数,带回数据1; /读完某一行时结束

23、,循环结束; magin=i; if(i) /如果文件只有一行,继续执行以下操作: strli-1=n; /若文件只有一行 ,在结尾处执行换行操作; strli=0; return EOF_LINE; /返回主调函数,带回数据2; else return EOF_REACHED;void main() FILE *infp,*outfp; /设置文件指针 char *p,fn64; int j; printf( 吉首大学课程设计C语言美化程序n); /以下六行字符为提示性界面 printf(C Program beautifiern); printf(*n); printf(*制作人:谭向宏、

24、吴方朴、刘辉*n); printf(*n); printf(请输入您需要美化的C文件:); scanf(%s,fn); /输入你要修改的文件名; infp=fopen(fn,r+); /应用读写方式打开输入的文件; if(infp=NULL) /若打开文件失败 ,报错; printf(文件夹打开错误,请重新输入.n); return; outfp=fopen(tempwenjian.c,w); /为输出打开一个文件,若不存在该文件自动新建生成一/文件名为tempwenjian.c的文件; if(outfp=NULL) /若打开文件失败,报错; printf(不能创建文件夹.n); return

25、; while(readln(infp)!=EOF_REACHED) /调用readln函数,若函数返回值不是0,做循环 ; p=check(strl,); /调用函数,查找符号 : if(p!=NULL) /查找成功 magin-; fprintf(outfp,n); /在符号之前输出换行符; for(j=0;jmagin;j+) fprintf(outfp, ); fprintf(outfp,%s,strl); /在tempwenjian.c文件中,以字符串格式输出 该行数据 ; p=check(strl,); /调用函数,查找符号 : if(p!=NULL) /查找成功 magin+;

26、fprintf(outfp,n); /在之后输出换行符; fprintf(outfp,n); /最后输出换行符; printf(恭喜您,美化代码成功!n); fclose(infp); /关闭原文件; fclose(outfp); /关闭出入文件; 五、总结 忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。尽管不是自己独立完成,仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。 另外平时扎实的基础也很关键,因为如果你平时学得就不怎

27、么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。为了解决此类问题,最好就是多向同学,老师请教,不要怕难为情。尤其是老师,评他们多年的编写程序的经验,要解决我们的问题,对他们来说只是small case。 从这一个多星期的设计过程中,我看到了大家的拼搏与努力,也让我知道团队精神得难能可贵,尽管一年下来大家不怎么有多大接触,但是彼此之间的友谊已经在我们心里扎根生底,在遇到问题时,我们会共同进退,每个人都很慷慨不会因为是通过自己艰辛劳动设计出来的东西而不准他人剽窃了。 总之,这次设计程序让我受益良多,我会好好珍惜像这种难得的机会。六、参考文献:XX文库、C程序设计(第三版)、C+程序设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1