ls命令具有一个-r选项,可以递归的列出子目录中的内容。请编写一个具有同样功能的程序。
2013-01-20 06:30
471 查看
#include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <string.h> #include <sys/stat.h> /** * 将数据的目录和深度一起传进来 */ void printfdir(char *dir, int depth) { DIR * dp; //对目录进行操作 struct dirent *entry; //对目录的数据项进行操作 struct stat statbuf; //用来记录状态信息 if ((dp = opendir(dir)) != NULL) { fprintf(stderr, "不能打开目录:%s\n", dir); } chdir(dir); //将当前的工作目重定向 while ((entry = readdir(dp)) != NULL) { //使用while来对整个目录进行遍历 lstat(entry->d_name, &statbuf); if (S_ISDIR(statbuf.st_mode)) { //判断是否是目录,如果是目录的话,就递归调用进入下一层 if (strcmp(".", entry->d_name) == 0 || strcmp("..", entry->d_name) == 0) { continue; } printf("%*s%s/\n", depth, " ", entry->d_name); printfdir(entry->d_name, depth + 4); } else { printf("%*s%s/\n", depth, " ", entry->d_name); } } chdir(".."); //如果已经浏览完,将程序当前的工作目录定为父目录 closedir(dp);//关闭目录流 } int main(void) { printfdir("/home/fjnucse/test",0); return EXIT_SUCCESS; }
相关文章推荐
- ls命令具有一个-r选项,可以递归的列出子目录中的内容。请编写一个具有同样功能的程序。
- 编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中: 假定该行不超过255个字符。回忆一下,您可以使用具有%c说明符的scanf()从输入中一次 读入一个字符,而且当您按下回车键时会产生换行符(/n)
- 操作系统实验参考以上示例程序中建立并发进程的方法,编写一个多进程并发执行程序。父进 程首先创建一个执行ls命令的子进程然后再创建一个执行ps命令的子进程,并控制 ps 命令总在 ls 命令之前执行。
- 【每天一个Linux命令】21. 列出目录内容命令ls
- 定义一个“点”(Point)类用来表示三维空间中的点(有三个坐标)。要求如下: (1)可以生成具有特定坐标的点对象。 (2)提供可以设置三个坐标的方法。 (3)提供可以计算该“点”距原点距离平方的方法。 (4)编写主类程序验证。
- 编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中: 假定该行不超过255个字符。回忆一下,您可以使用具有%c说明符的scanf()从输入中一次 读入一个字符,而且当您按
- 实现一个可以发送表单内容转换成pdf并发送功能的android 程序
- 1-2.编写一个具有计算功能的angular程序
- 用java语言编写一个类,使该类包含一个方法f(),该方法具有可以输出同时带有大小写两种形式英文字母表的功能。
- 编写一个通讯录,功能与以前的诺基亚手机一样,可以通过键盘进行箭头的移动,回车进入选项,用“W”键代表手机手机左键,“backspace”键代表返回上一级。能够实现基本的人性化的增删改查及文件的导入导出
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 每日一题第一题:编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。
- 编写一个菜单驱动程序的雏形。该程序显示一个提供4个选项的菜单——每个选项用一个字母标记。
- C#--第六周实验--任务2--继续在Class类里编写一个方法,名称为Reconvert,参数一个,但可以是字符串、整数、单精度、双精度,方法功能返回参数的逆序
- C#--2.继续在该类中编写一下方法,名称为Reconvert,参数一个,但可以是字符串、整数、单精度、双精度,方法功能返回参数的逆序。
- 编写一个程序,首先用opendir函数打开用户指定的目录,然后调用readdir函数读取该目录内容
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出
- 一个发邮件的类,带验证功能,可以发html内容,可以添加附件,并解决附件乱码问题。
- 做练习时写了一个调用DOS命令删文件夹及子目录和文件的C#程序