天天看点

列出指定目录下所有文件名

要求:绝对路径名做输入参数,打印输出该路径下所有文件名

知识点:

打开目录函数:DIR* opendir (const char * path )

读取目录函数:struct dirent *readdir(DIR *dir)

返回下一个目录项的指针。

#include<sys/types.h>  

#include<dirent.h>

dirent结构体定义如下:

struct dirent

{        

ino_t  d_ino;              

off_t  d_off;              

unsigned short d_reclen;            

unsigned char  d_type;              

char     d_name[256];

};

示例    

DIR *dirptr = opendir(“pathname”);    

struct dirent *entry;    

while (entry = readdir(dirptr))

{            

printf("%s\n", entry->d_name);    

代码:

#include<stdio.h>

#include<stdlib.h>

#include<sys/stat.h>

#include<unistd.h>

#include<errno.h>

#include<dirent.h>

#include<sys/types.h>

int main(int argc,char*argv[])

{

    struct stat buf;

    DIR* dir;

    struct dirent *dirent;

    int res;

    if(argc!=2)

    {

        printf("参数不正确!正确格式:./main filepath\n");

        exit(1);

    }

    stat(argv[1],&buf);

    res=buf.st_mode&S_IFDIR;

    if(res==S_IFDIR)

    {

        printf("%s为目录\n",argv[1]);

    }

    else

    {

        printf("%s不是目录\n",argv[1]);

        exit(1);

    }

    dir=opendir(argv[1]);

    printf("%s目录下的文件:\n",argv[1]);

    while(dirent=readdir(dir))

    {

        if((strcmp(dirent->d_name, ".") == 0) || (strcmp(dirent->d_name, "..") == 0))

        {        

            continue;   

        }

        printf("%s\n",dirent->d_name);

    }

    closedir(dir);

    return 0 ;

}

继续阅读