readdir

readdir

名称:读取目录项

总揽:

    #include<dirent.h>
    #include<sys/types.h>

    struct dirent *readdir(DIR *dir)

描述:

     readdir(0函数用来读取指定的目录流的目录项到一个dirent结构体指针中,并将

读取指针设置为下一个目录项的位置。

     dirent的结构体定义如下:

     struct dirent{
    ino_t d_no; /*inode number*/
        off_t d_off; /*offset to the next dirent*/
        unsigned short int d_reclen; /*length of this record*/
        unsigned char d_type; /*type of file*/
        char d_name[255]; /*filename*/
         };
     
返回值:读取成功返回一个dirent结构体指针,失败或到达目录结尾返回NULL.

错误:

     EBADF:dir不是个合法的目录流

参见:opendir seekdir telldir closedir rewinddir

实例:

     #类似ls命令的编写

      #include<dirent.h>
    #include<sys/types.h>
    #include<stdio.h>
    #include<stdlib.h>

    int main(int argc,char **argv){
        if(argc<2){
            /*列出当前目录的内容*/
            DIR *dir;
            struct dirent *dirp;
            if((dir=opendir("."))==NULL){
                printf("Can't open the directory . \n");
                exit(1);}
            while((dirp=readdir(dir))!=NULL)
                printf("%s\n",dirp->d_name);
            closedir(dir);
        }else{
            /*列出指定目录的内容*/
            int i=1;
            for(;i<argc;i++){
                DIR *dir;
                struct dirent *dirp;
                if((dir=opendir(argv[i]))==NULL){
                    printf("Can't open the directory:%s",argv[i]);
                    exit(1);}
                printf("Directory:%s:\n",argv[i]);
                while((dirp=readdir(dir))!=NULL)
                    printf("%s\n",dirp->d_name);
                closedir(dir);}
            }
        return(0);
        }
       
           
 

你可能感兴趣的:(职场,readdir,休闲)