linux c 目录和子目录遍历

最近再看linux方面的知识,话说现在linux前途很好吖,,,所以我也试着学linux,前几天从oschina里看了一个linux c遍历目录的源代码,但发现子目录没有进行遍历,所以进行了修改,希望能多交流学习,本人新手,愿共同进步,高手勿喷~谢拉

#include <stdio.h>  
#include <dirent.h>    
#include <sys/stat.h>
int trave_dir(char *path,int i)
{
    DIR *d;
    struct dirent *file;
    struct stat buf;
    if(!(d=opendir(path)))
    {
        printf("error opendir %s!!!\n",path);
        return -1;
    }
    chdir(path); //一定要打开文件夹,不打开会出现错误
    while((file=readdir(d)) != NULL)
    {
        lstat(file->d_name,&buf);
        if(!(S_IFDIR&buf.st_mode))
        {
        printf("%*s%s\n",i,"",file->d_name);//printf特殊用法  格式输出
        printf("\t\tfile size=%d\n",buf.st_size);
        printf("\t\tfile last modify time=%s\n",asctime(gmtime(&buf.st_mtime)));//先转化成格林威治时间,然后返回tm结构,接着用asctime转化成标准时间(这里 不知到有没有更好的方法)
    }
        else
        {
            if(strcmp(file->d_name,".")==0||strcmp(file->d_name,"..")==0)
                  continue;
            printf("%*s%s(dir)\n",i,"",file->d_name);
            printf("\t\tfile last modify time=%s\n",asctime(gmtime(&buf.st_mtime)));
            trave_dir(file->d_name,i+2);
        }
    }
    chdir("..");
    closedir(d);
    return 0;
}  
int main()
{
    int i;
    trave_dir(".",0);
    return 0;
}


你可能感兴趣的:(c,linux,目录遍历)