- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二目录树的遍历
实验二 目录树的遍历
张冰 22920132203923 2015/10/18
实验目的
掌握与文件和目录树有关的系统调用和库函数。
实验内容
1.编写程序myfind
命令语法:
??????? myfind? pathname? [-comp filename | -name str…]
命令语义:
(1)myfind? pathname 的功能:
除了具有与程序4-7相同的功能外,还要输出在pathname目录子树之下,文件长度不大于4096字节的常规文件,在所有允许访问的普通文件中所占的百分比。程序不允许打印出任何路径名。
(2)myfind? pathname? -comp?filename的功能:
filename是常规文件的路径名(非目录名,但是其路径可以包含目录)。命令仅仅输出在pathname目录子树之下,所有与filename文件内容一致的文件的绝对路径名。不允许输出任何其它的路径名,包括不可访问的路径名。
(3)myfind? pathname? -name str…的功能:
str…是一个以空格分隔的文件名序列(不带路径)。命令输出在pathname目录子树之下,所有与str…序列中文件名相同的文件的绝对路径名。不允许输出不可访问的或无关的路径名。
pathname和filename均既可以是绝对路径名,也可以是相对路径名。pathname既可以是目录,也可以是文件,此时,目录为当前工作目录。
2.注意尽可能地提高程序的效率。注意避免因打开太多文件而产生的错误。
3.遍历目录树时,访问结点(目录项)的具体操作应当由遍历函数dopath携带的函数指针参数决定。这样程序的结构清晰,可扩充性好。
实验过程
实验本身是基于课本程序4—7,在此基础上进行扩展。除了列出各类型文件所占百分比之外,还需增加三个函数功能,这将通过myfunc1、myfunc2、myfunc3来实现。
首先要理解课本的三个主要函数:myftw、dopath和myfunc。myftw和dopath函数实现递归遍历目录,再调用myfunc函数统计各类型文件所占比例。
当argc=2时,只需要在myfunc函数和main函数中做出修改,统计出文件长度不大于4096的文件及其所占百分比,命名为myfunc1函数。
argc为4且argv[2] == “-comp”时,命令格式为:
myfind pathname -comp filename
为提高程序效率,在比较文件是否相同时,可先比较两个文件的大小,如果大小不同,则内容肯定不同,这样就免去了读文件所浪费的时间;如果大小相同,则再通过读文件进行比较。此时应当注意输入缓冲区不必开的太大,你可以从实验二得到启发。由于要求输出符合要求的文件的绝对路径名,因此当参数pathname不是绝对路径时,要调用getcwd()等函数来取得文件的绝对路径名。通过myfunc2实现。
argc 大于等于4且argv[2] == “-name”时,命令格式为:
myfind pathname -name str…
实现方法可以通过循环,把当前遍历的文件名和str这个序列中的文件名进行比较,如果和序列中的一个文件名相同,就符合条件,此时输出符合条件的文件的绝对路径名。通过myfunc3实现。
实验结果
程序名:myfind.c
可执行文件:myfind
执行命令:./myfind /home
执行命令:./myfind /home -comp apue.h
执行命令:./myfind /home -name apue.h hello.c
体会与建议
这次实验感觉很长很麻烦,但是好在书上已经给出了大部分相关代码,所以完成起来还会稍微容易一些,主要就是完成myfunc2和myfunc3的编写。感觉非常困难的地方就是很多函数的参数并不会用,尤其是有很多指针变量,看起来就很头疼,比较费事。
程序编译的过程中出现最多的错误就是函数没有定义,其实就是因为缺少了相应的头文件,比如path_alloc.c文件,就是出错以后才加上去的,还有就是err_ret这些函数,用了就会报错所以我最后都用printf函数代替了,也能正常运行出结果。
一开始看到题目的时候还不太明白-comp和-name两个命令有什么区别,在运行完之前才发现两个函数实现的功能是很不一样的,例如apue.h这个文件,如果用-comp命令,会发现有一些目录下的该文件显示can’t open,而用-name时就不会出现这个提示。我觉得应该是有些目录下的文件对读取该文件的内容有限制,所以才会can’t open吧。
还是建议老师上课的时候能把程序详细讲解一下,因为好多地方都看不懂啊……
您可能关注的文档
- 安徽教师招聘备考如何提高学生学习生物的兴趣.docx
- 安徽教师招聘考试“西方音乐史”填空题练习二.docx
- 安徽教师招聘高频考点之“教育”解析.docx
- 安庆市醉美人酒业有限责任公司.doc
- 安徽教师招聘考试“西方音乐史”填空题练习六.docx
- 安徽机电职业技术学院物流采购管理.doc
- 学雷锋志愿者服务活动记录.doc
- 安徽教师招聘历史学科笔试复习建议.docx
- 安徽省2015年对口招生(财经商贸类)专业技能测试及评分标准.docx
- 安徽省2015年普通专升本招生计划.doc
- 2024至2030年中国人造棉面料行业投资前景及策略咨询报告.docx
- 重庆市渝中区遴选公务员2024年国家公务员考试考试大纲历年真题10340笔试历年典型考题及解题思路附.docx
- 2024至2030年中国甲基苯乙酮行业深度调研及发展预测报告.docx
- 2024至2030年中国羚羊角类饮片行业深度调查与前景预测分析报告.docx
- 重庆市面向中国农业大学定向选调2024届大学毕业生2024年国家公务员考试考试大纲历年真题14笔试历.docx
- 重庆市面向西北工业大学定向选调2024届大学毕业生00笔试历年典型考题及解题思路附答案详解.docx
- 中国不动杆菌感染治疗药行业市场现状分析及竞争格局与投资发展研究报告2024-2029版.docx
- 2024至2030年全球与中国ETL软件市场现状及未来发展趋势.docx
- 初中八年级(初二)生物下册期末考试1含答案解析.docx
- 干簧式继电器项目申请报告.docx
文档评论(0)