linux 下 opendir 和 readdir 函数的应用

本文介绍了一段使用C语言实现的函数,该函数能够递归地遍历指定目录,并打印出所有子目录及文件的名称。通过使用`readdir()`函数和`opendir()`函数来获取目录信息,同时利用递归调用实现深度优先搜索目录结构。代码中还包含了对.和..目录的跳过处理,确保只输出有效文件名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <string.h>
void printall(const char *path, int max){
   DIR *dir = opendir(path);   //产生DIR的指针
   if (dir == NULL){
   	  return ;	
   }
   struct dirent *dirent;  //系统默认含有的结构体体
   int t = 1;
   while(dirent = readdir(dir)){
	   if (!strcmp(dirent->d_name,".")||!strcmp(dirent->d_name,"..")){  //遇到. 和 .. 是跳过
	      continue;
	   }
	   for (t = 1; t < max; ++t){
		   printf("--");
	   }
       if(dirent->d_type == 4){
		   printf("[%s]\n",dirent->d_name);
	       char tmp[100] = {0};
		   sprintf(tmp,"%s/%s",path,dirent->d_name);   // 需要进行地址的拼接,否则不能正确往下执行
		   printall(tmp,max + 1);
	   }
	   printf("%s\n",dirent->d_name);
   
   }
}
int main(void)
{
    printall("../../",1);
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值