centos中c遍历目录文件例子

来源:互联网 发布:划船机品牌 知乎 编辑:程序博客网 时间:2024/05/18 20:13

以下是很有意思的c遍历文件目录的代码,值得回味:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dirent.h>#include <unistd.h>int readFileList(char *basePath){    DIR *dir;    struct dirent *ptr;    char base[1000];    if ((dir=opendir(basePath)) == NULL)    {        perror("Open dir error...");        exit(1);    }    while ((ptr=readdir(dir)) != NULL)    {        if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0)    ///current dir OR parrent dir            continue;        else if(ptr->d_type == 8)    ///file            printf("d_name:%s/%s\n",basePath,ptr->d_name);        else if(ptr->d_type == 10)    ///link file            printf("d_name:%s/%s\n",basePath,ptr->d_name);        else if(ptr->d_type == 4)    ///dir        {            memset(base,'\0',sizeof(base));            strcpy(base,basePath);            strcat(base,"/");            strcat(base,ptr->d_name);            readFileList(base);        }    }    closedir(dir);    return 1;}int main(void){    DIR *dir;    char basePath[1000];    ///get the current absoulte path    memset(basePath,'\0',sizeof(basePath));    getcwd(basePath, 999);    printf("the current dir is : %s\n",basePath);    ///get the file list    memset(basePath,'\0',sizeof(basePath));    strcpy(basePath,"./XL");    readFileList(basePath);    return 0;}


0 0