磁盘文件系统类型:ext2 ext3 ext4
深度优先遍历目录
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <strings.h>
void printdir(char* pathname,int width){
DIR* dir=opendir(pathname); //首先打开路径
if(NULL==dir){
perror("opendir");
return;
}
struct dirent *p;
char buf[512];
while((p=readdir(dir))!=NULL){ //读目录中的每个文件
if(!strcmp(p->d_name,".") || !strcmp(p->d_name,"..")){
continue;
}
printf("%*s%s\n",width,"",p->d_name); //打印width个空格,然后打印文件名
if(p->d_type == 4){ //说明是目录
bzero(buf,sizeof(buf));
sprintf(buf,"%s%s%s",pathname,"/",p->d_name); //进行目录拼接。
printdir(buf,width+4); //递归
}
}
}
int main(int argc,char* argv[]){
if(argc!=2){
printf("error args\n");
return -1;
}
DIR *dir=opendir(argv[1]);
if(dir==NULL){
return -1;
}
printf("%s\n",argv[1]); //首先打印出传入的路径
printdir(argv[1],0);
return 0;
}