0
点赞
收藏
分享

微信扫一扫

用C语言列出目录下的文件

正义的杰克船长 2022-04-17 阅读 98
c语言

用C语言列出目录下的文件,在linux下可采用readdir()函数来实现,代码实现过程为:

  1. 打开目录

  2. 循环读目录,输出目录下文件

  3. 关闭目录指针

参考代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

#include <dirent.h>

#include <stdio.h>

int main()

{

    DIR *dirp; 

    struct dirent *dp;

    dirp = opendir("."); //打开目录指针

    while ((dp = readdir(dirp)) != NULL) { //通过目录指针读目录

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

    }      

    (void) closedir(dirp); //关闭目录

    return 0;

}

在windows下,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

#include <io.h>

#include <stdio.h>

void printDir( const char* path )

{

    struct _finddata_t data;

    long hnd = _findfirst( path, &data );    // 查找文件名与正则表达式chRE的匹配第一个文件

    if ( hnd < 0 )

    {

        perror( path );

    }

    int  nRet = (hnd <0 ) ? -1 : 1;

    while ( nRet >= 0 )

    {

        if ( data.attrib == _A_SUBDIR )  // 如果是目录

            printf("   [%s]*\n", data.name );

        else

            printf("   [%s]\n", data.name );

        nRet = _findnext( hnd, &data );

    }

    _findclose( hnd );     // 关闭当前句柄

}

void main()

{

    printDir("d:/*.*");

}

相关函数说明:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

long _findfirst( char *filespec, struct _finddata_t *fileinfo );  

// 功  能 : 提供与filespec指定入口泛式匹配的第一个文件.通常后继用_findnext()函数来完成某泛式下的文件遍历.  

// 头文件 : #include <io.h>  

// 参  数 : filespec - 目标文件规范,可以包含通配符  

//          fileinfo - 文件信息buffer  

// 返回值 : 成功返回唯一的搜索句柄  

//          出错返回-1,且设置errno为如下值:  

//          ENOENT 该泛式无法匹配  

//          EINVAL 无效文件名  

int _findnext( long handle, struct _finddata_t *fileinfo );  

// 功  能 : 按照前面_findfirst中的泛式规则,查找下一个符合该泛式的文件,并以此为依据修改fileinfo中的值  

// 头文件 : #include <io.h>  

// 参  数 : long handle - 搜索句柄(通常由紧靠其前的_findfirst()返回)  

//          fileinfo    - 文件信息buffer  

// 返回值 : 成功返回0  

//          出错返回-1

int _findclose( long handle );  

// 功  能 : 关闭搜寻句柄并释放相应资源  

// 头文件 : #include <io.h>  

// 参  数 : long handle - 搜索句柄(通常由紧靠其前的_findfirst()返回)  

// 返回值 : 成功返回0  

//          出错返回-1

举报

相关推荐

0 条评论