古詩詞大全網 - 字典詞典 - 怎樣使用C語言列出某個目錄下的文件?

怎樣使用C語言列出某個目錄下的文件?

用C語言列出目錄下的文件,在linux下可采用readdir()函數來實現,代碼實現過程為:

打開目錄

循環讀目錄,輸出目錄下文件

關閉目錄指針

參考代碼:

#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下,代碼如下:

#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?);

}

intnRet?=?(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:/*.*");

}

相關函數說明:

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