博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux C 遍历指定目录
阅读量:5280 次
发布时间:2019-06-14

本文共 1424 字,大约阅读时间需要 4 分钟。

#include
//标准输入输出#include
//各种系统调用#include
//与目录有关的操作#include
//与字符串处理有关的函数#include
//与文件状态有关#include
//linux系统自定义的类型void show_directory(char * dir_name,int level);int main(int argc, char * argv[]){ if(argc != 2) { fprintf(stdout,"%s\n","参数输入有问题!"); return 1; } show_directory(argv[1],0); return 0; }/*用于显示目录 * 第一个参数为目录的名称 * 第二个参数为目录为几及目录 * */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[100]; getcwd(cwd,100); 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) == 0 || strcmp("..",entry->d_name) == 0) { continue; } int level2; level2 = level + dir_name_len + 10; //计算出空格数 show_directory(entry->d_name,level2); } else if( S_ISREG(statbuf.st_mode) ) //如果是文件,输出 { int length = level + (int)strlen(entry->d_name) + dir_name_len + 10; //子段应有占的长度 fprintf(stdout,"%*s\n",level + (int)strlen(entry->d_name) + dir_name_len + 10,entry->d_name); } } chdir(".."); closedir(dir);}

 

转载于:https://www.cnblogs.com/qingergege/p/6494245.html

你可能感兴趣的文章
Arduino编程器 USBasp USBtinyISP FT232-ISP 对比 区别
查看>>
高频焊台源码,改进版V2
查看>>
宝塔面板安装的mysql5.5用命令行kill -9后启动不了
查看>>
Android(java)学习笔记118:BroadcastReceiver之 外拨电话的广播接收者
查看>>
Android(java)学习笔记165:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例的优化:请求码和结果码)...
查看>>
Eclipse导入工程遇到的一些问题之中文乱码
查看>>
leetcode[132]Palindrome Partitioning II
查看>>
leetcode[71]Simplify Path
查看>>
团队项目测评博客
查看>>
discuz 文件模板edit
查看>>
查看CPU数量和核心数
查看>>
Android异步加载网络图片
查看>>
python学习之 - XML
查看>>
css问题小计
查看>>
Laravel学习笔记(三)数据库 数据库迁移
查看>>
ORACLE查看并修改最大连接数
查看>>
box-flex不均分问题
查看>>
Python--GIL 详解
查看>>
Oracle数据导入Mysql中
查看>>
BZOJ-4424 &&CodeForces-19E Fairy DP+dfs (Link-Cut-Tree可A)
查看>>