0801|IO进程线程day4 文件IO函数-目录相关函数

1)opendir

 功能:打开一个目录文件;

原型:

    #include 
    #include 

    DIR *opendir(const char *name);

参数:

        char *name:指定要打开的目录的路径以及名字;

返回值:

        成功,返回指针;

        失败,返回NULL,更新errno;

2)closedir

 功能:关闭目录;

原型:

    #include 
    #include 

    int closedir(DIR *dirp);

参数:

        DIR *dirp:指向要关闭的文件的指针名;

返回值:

        成功,返回0;

        失败,返回-1,更新errno;

3)readdir

 功能:读取目录;

原型:

    #include 

    struct dirent *readdir(DIR *dirp);

参数:

        DIR *dirp:指向要读取的文件指针名

返回值:

        成功,返回结构体指针;

        失败,返回NULL; 更新errno;

        目录读取完毕,返回NULL,不更新errno;

结构体成员:

struct dirent {

    ino_t          d_ino;       /* Inode number */
    off_t          d_off;       /* Not an offset; see below */
    unsigned short d_reclen;    /* Length of this record */
    unsigned char  d_type;      /* Type of file; not supported
                                              by all filesystem types */
    char           d_name[256]; /* Null-terminated filename */

};

4)综合练习:打印当前路径下所有文件的名字,除了隐藏文件

#include 
#include 
#include 
#include 
#include 

int main(int argc, const char *argv[])
{
    DIR* dp = opendir("./");
    if(NULL == dp)
    {
        ERR_MSG("opendir");
        return -1;
    }
    printf("opendir success\n");

    int i = 0;
    while(1)
    {
        struct dirent* rp = readdir(dp);
        if(NULL == rp)                                 
        {
            if(0 == errno)
            {
                printf("目录读取完毕\n");
                break;
            }
            else
            {
                ERR_MSG("readdir");
                return -1;
            }
        }

        //判断是否是隐藏文件:以.字符开头
        if(rp->d_name[0] != '.')    //*(rp->d_name)
            printf("[%d]%s\n", ++i, rp->d_name);
    }




    if(closedir(dp) < 0)
    {
        ERR_MSG("closedir");
        return -1;
    }

    return 0;
}

0801|IO进程线程day4 文件IO函数-目录相关函数_第1张图片

你可能感兴趣的:(IO进程线程,#,文件IO函数,linux,c语言)