首页 > 编程语言 > 详细

linux c++(IO & 第七篇 对目录的操作)

时间:2021-05-04 10:15:09      阅读:30      评论:0      收藏:0      [点我收藏+]
对目录的操作
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>


int count = 0;
int dircount(char *dirname)
{
    //打开目录
   DIR *dirp =  opendir(dirname);
   if(dirp == NULL)
   {   
       perror("opendir err");
       return -1; 
   }   
    //循环读目录,如果是普通文件,count++如果是目录,就绪调用这个函数
    struct dirent *dentp = NULL;
    while((dentp = readdir(dirp))!=NULL) //如果为NULL 代表读到目录末尾
    {   
//        printf("dirname:%s, dtype:%d\n",dentp->d_name,dentp->d_type);
        if(dentp->d_type == DT_DIR) //如果是目录
        {   
            if(strcmp("..",dentp->d_name) == 0|| strcmp(".",dentp->d_name) == 0)
                continue;
    
            //注意进程的工作路径
            char newdirname[256]={0};
            sprintf(newdirname,"%s/%s",dirname,dentp->d_name);
            dircount(newdirname);
        }   
        if(dentp->d_type == DT_REG)
        {   
            //这是普通文件,开始计数
            count++;
        }   
    }   
    
    //关闭目录
    closedir(dirp);
    return 0;
}

int main(int argc,char *argv[])
{
    if(argc != 2)
    {   
        printf("./a.out dirname\n");
        return -1; 
    }   
    dircount(argv[1]);
    printf("count = %d\n",count);                                                                                                
    return 0;
}

linux c++(IO & 第七篇 对目录的操作)

原文:https://www.cnblogs.com/lodger47/p/14728500.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!