当前位置 - 股票行情交易網 - 國際漫評 - 怎樣使用C語言列出某個目錄下的文件?

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

C語言本身沒有提供象dir_list()這樣的函數來列出某個目錄下所有的文件。不過,利用C語言的幾個目錄函數,妳可以自己編寫壹個dir_list()函數。

首先,頭文件dos.h定義了壹個find_t結構,它可以描述DOS下的文件信息,包括文件名、時間、日期、大小和屬性。其次,C編譯程序庫中有_dos_findfirst()和_dos_findnext()這樣兩個函數,利用它們可以找到某個目錄下符合查找要求的第壹個或下壹個文件。

dos_findfirst()函數有三個參數,第壹個參數指明要查找的文件名,例如妳可以用“*.*”指明要查找某個目錄下的所有文件。第二個參數指明要查找的文件屬性,例如妳可以指明只查找隱含文件或子目錄。第三個參數是指向壹個find_t變量的指針,查找到的文件的有關信息將存放到該變量中。

dos_findnext()函數在相應的目錄中繼續查找由_dos_findfirst()函數的第壹個參數指明的文件。_dos_findnext()函數只有壹個參數,它同樣是指向壹個find_t變量的指針,查找到剛文件的有關信息同樣將存放到該變量中。

利用上述兩個函數和find_t結構,妳就可以遍歷磁盤上的某個目錄,並列出該目錄下所有的文件,請看下例:

#include <stdio.h>

#include <direct.h>

#include <dos.h>

#include <malloc.h>

#include <memory.h>

#include <string.h>

typedef struct find_t FILE_BLOCK

void main(void);

void main(void){FILE_BLOCK f-block; /* Define the find_t structure variable * /

int ret_code; / * Define a variable to store the return codes * /

/ * Use the "*.*" file mask and the 0xFF attribute mask to list

all files in the directory, including system files, hidden

files, and subdirectory names. * /

ret_code = _dos_findfirst(" *. * ", 0xFF, &f_block);

/* The _dos_findfirst() function returns a 0 when it is successful

and has found a valid filename in the directory. * /

while (ret_code == 0){/* Print the file's name * /

printf(" %-12s

, f_block, name);

/ * Use the -dos_findnext() function to look