一、程序函数流程图
二、关键函数的功能
1.void path_handle(char *path)
函数功能:处理传递过来的路径信息,判断文件类型。
2.int file_information(char *path)
函数功能:获取文件信息
3.void directory_information(char *path)
函数功能:获取目录信息
4.void sort(char *filename [MAX_FILE_NAME][NAME_MAX+1], int count)
函数功能:排序
5.void display_attribute(struct stat buf, char path)
函数功能:获取文件属性并打印
6.void display_single(char *path)
函数功能:输出文件名
7.int dir_queue_init(void)
函数功能:初始化链表
8.int dir_queue_get(char *name)
函数功能:获取最早插入的元素并删除,判空
9.int dir_queue_add(char *name)
函数功能:插入新元素
10.void output(struct stat *buf, char *path)
函数功能:信息输出
三、文件实现部分重要代码
参数处理
参数处理部分自己开始没有想出来,我看了书上的处理办法,一个一个解析出来,但是我觉得比较麻烦,后来听了学长说的参数处理的函数getopt,这个函数自己研究了挺长时间,稍微有点难理解,但是他是自己处理参数,使用起来特别方便。先看一下实现代码
首先说一下,我把确定参数-a, -l,-R的参数定义为全局变量方便处理
g根据getopt的返回值确定参数,如果识别不到别的选项,返回-1,遇到其他选项则返回 ‘?’
optind 是getopt 函数自己设置的全局变量,下一次调用getopt时,从optind存储的位置开始检查选项。
我说的可能不是很清楚,有兴趣的话可以参考一下学长的博客,介绍了getopt 的用法。
getopt的用法
小心得
写程序还是要有清晰的思路再开始,而且细小的地方问题最好也能一次考虑到,自己的思路不是很清晰就写了一次,最后还是删掉重来;有些小问题考虑的不周全,导致最后很难修改。