shell编程万历历和对应c语言程序.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
shell编程万历历和对应c语言程序

shell下C语言编程 大家都知道Linux的shell终端很强大,很多命令和程序都可以通过shell来编译完成。实际上,shell命令以及linux系统内核都是用C和C++编写而成的。下面我就拿个C程序,在shell终端下来实现编译,作为一个小的教程让大家对此加深了解。 我编写的是一个C语言程序,输入年份和月份,可以输出打印月历。程序维护工具我使用的是主流的make工具,来实现自动编译连接的,对应编写的有一个简单的Makefile文件。下面,我开始正式演示。 首先,我们要确保有一个可供编译和开发的环境GCC,GCC是GNU推出的功能强大、性能优越的多平台编译器。它的安装非常简单,只需要在终端输入:sudo apt-get install build-essential 即可在线安装。如图一所示: 图一 下面,先给大家看看我编写的C语言程序源代码,对要演示的程序先有一个基本的了解。如图二、图三、图四和图五: 图二 图三 图四 图五 对源程序有所了解后,我给大家简单说下make工具的语法规则。一般的语法规则为:target(目标名) : dependency(依赖模块) + command(命令行)。本例中我的源代码程序是由一个名为“shaokunkun_calender.c组成,希望生成的可执行文件为“shaokunkun_calender.exe”,这时候我们就可以通过make编译命令来完成这项工作。本例中需要的Makefile文件,如图六所示: 图六 从图六中,我们可以看到,这个文件有三个依赖依赖描述语句,说明了三个目标、三个目标的依赖模块及由依赖模块生成目标的命令行。这时候,如果我们运行 make 工具,就可以自动生成可执行文件shaokunkun_calender.exe和目标文件。如图七所示: 图七 如果我们修改了源代码文件shaokunkun_calender.c,只要重新运行make命令,就可以自动编译修改过的文件并连接生成新的可执行文件。 如图七,已经生成了shaokunkun_calender.exe可执行文件。这时候,我们运行下这个程序,就实现了在shell下编译C程序。相关编译结果如图八所示: 图八 如果,如果我们运行make clean语句,就会执行目标clean所对应的命令行,把可执行文件shaokunkun_calender.exe及目标文件shaokunkun_calender.o全部删除。相关命令操作如图九所示: 图九 对于这个例子,大家注意,如果运行make ,不给出目标名称。根据系统的默认原则,会自动更新文件中的第一个目标。即 make shaokunkun_calender.exe。 其实,这个日历程序还可以用Shell语言编写,能更加方便。不仅能达到同样的显示效果,而且代码简洁明朗,非常便于我们维护和连接。下面,我将我的shell编程运行结果演示给大家,如图十所示: 图十 到目前为止,关于在shell环境下C语言的编程,我就基本给大家演示完了。在最后我还给大家示范了一个纯shell编程的例子,让大家来对比学习。相信大多数同学都掌握了吧!下面,我再把我的程序清单、源程序文件及makefile文件附加给大家,为了让大家能够更方便的了解我的教程! 程序清单:一个Makefile编译连接文件,一个名为shaokunkun_calender.c的源程序和一个名为shaokunkun_calender_shell的shell程序。如图十一所示: 图十一 源程序文件C语言代码: #include stdio.h int JgYr(int yr) { if (yr%4==0yr%100!=0||yr%100==0yr%400==0) return 1; else return 0; } int CalWkd(int yr,int mth) { int ds=0,i,rst,wkd; int mthd[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if (JgYr(yr)) mthd[2]=29; for (i=1;imth;i++) ds+=mthd[i]; ds+=1; rst=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+ds; wkd=rst%7; return wkd; } showcld(int wkd,int mtd) { int dt=1,i,j=0; printf(Sun\tMon\

文档评论(0)

woaitiantian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档