用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 ", 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]* ", data.name ); else printf(" [%s] ", 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
经验分享 程序员 微信小程序 职场和发展