递归输出目录下所有文件

#include   <unistd.h> 
#include   <stdio.h> 
#include   <dirent.h> 
#include   <string.h> 
#include   <sys/stat.h> 
 
int printpath(char *  path ) 

   DIR *directory; 
   struct      dirent * dir_entry; 
   char        buffer[128]; 
 
   struct  stat  buff; 
   if ((directory=opendir(path)) == NULL) {  
       fprintf(stderr, "%s", path); 
       perror(" "); 
       return -1; 
   } 
 
     while (dir_entry=readdir(directory)) { 
     if  (!strcmp(dir_entry->d_name,".")||!strcmp(dir_entry->d_name,"..")) { 
              /*  do    nothing*/ 
     } 
     else     
     { 
             sprintf(buffer,"%s/%s",path,dir_entry->d_name); 
 
           if (lstat(buffer,&buff)<0) 
             continue; 
 
           if(S_ISDIR(buff.st_mode)) 
           {        
             printf(" \n directory -%s \n \n", buffer); 
             printpath(buffer); 
           }        
           else     
           {        
             printf("file name = %s path= -%s \n" ,dir_entry->d_name, path); 
           }        
      } 
    } 
 
    closedir(directory); 
 

 
int main() 

        printpath("/root/util/tmp"); 
        return 0; 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值