Linux C 遍历指定目录

#include<stdio.h>    //标准输入输出
#include<unistd.h> //各种系统调用
#include<dirent.h> //与目录有关的操作
#include<string.h> //与字符串处理有关的函数
#include<sys/stat.h> //与文件状态有关
#include<sys/types.h>//linux系统自定义的类型 void show_directory(char * dir_name,int level);
int main(int argc, char * argv[])
{
if(argc != )
{
fprintf(stdout,"%s\n","参数输入有问题!");
return ;
}
show_directory(argv[],);
return ; } /*用于显示目录
* 第一个参数为目录的名称
* 第二个参数为目录为几及目录
* */ void show_directory(char * dir_name,int level)
{
DIR * dir; //目录流指针
struct dirent * entry; //目录项结构体指针
struct stat statbuf; if( ( dir = opendir(dir_name) ) == NULL )
return ; chdir(dir_name); char cwd[];
getcwd(cwd,); int dir_name_len;
dir_name_len = strlen(dir_name);
fprintf(stdout,"%*s文件夹中:\n",level + dir_name_len,dir_name);
while( ( entry = readdir(dir) ) != NULL )
{ lstat(entry->d_name,&statbuf);
//如果是目录,就第归调用
if( S_ISDIR (statbuf.st_mode) )
{
if( strcmp(".",entry->d_name) == || strcmp("..",entry->d_name) == )
{
continue;
}
int level2;
level2 = level + dir_name_len + ; //计算出空格数
show_directory(entry->d_name,level2);
}
else if( S_ISREG(statbuf.st_mode) ) //如果是文件,输出
{
int length = level + (int)strlen(entry->d_name) + dir_name_len + ; //子段应有占的长度
fprintf(stdout,"%*s\n",level + (int)strlen(entry->d_name) + dir_name_len + ,entry->d_name);
}
}
chdir("..");
closedir(dir); }
上一篇:天高任鸟飞,在你还苦闷Android出路时,总有人在系统钻研为高级开发做准备,技能提升的重要性不用我说了!


下一篇:realm-java 源码疑问