怎樣使用c語言列出某個目錄下的檔案

時間 2021-12-19 14:27:10

1樓:手機使用者

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 #include #include #include #include #include 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. * /

/* 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\n, f_block, name);

/ * use the -dos_findnext() function to look

2樓:匿名使用者

用c語言列出目錄下的檔案,在linux下可採用readdir()函式來實現,**實現過程為:

開啟目錄

迴圈讀目錄,輸出目錄下檔案

關閉目錄指標

#include

#include

int main()

(void) closedir(dirp); //關閉目錄

return 0;

}在windows下,**如下:

#include

#include

void printdir( const char* path )

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

while ( nret >= 0 )

_findclose( hnd );     // 關閉當前控制代碼

}void main()

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

// 功  能 : 提供與filespec指定入口泛式匹配的第乙個檔案.通常後繼用_findnext()函式來完成某泛式下的檔案遍歷.

// 標頭檔案 : #include

// 參  數 : filespec - 目標檔案規範,可以包含萬用字元

//          fileinfo - 檔案資訊buffer

// 返回值 : 成功返回唯一的搜尋控制代碼

//          出錯返回-1,且設定errno為如下值:

//          enoent 該泛式無法匹配

//          einval 無效檔名

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

// 功  能 : 按照前面_findfirst中的泛式規則,查詢下乙個符合該泛式的檔案,並以此為依據修改fileinfo中的值

// 標頭檔案 : #include

// 參  數 : long handle - 搜尋控制代碼(通常由緊靠其前的_findfirst()返回)

//          fileinfo    - 檔案資訊buffer

// 返回值 : 成功返回0

//          出錯返回-1

int _findclose( long handle );

// 功  能 : 關閉搜尋控制代碼並釋放相應資源

// 標頭檔案 : #include

// 參  數 : long handle - 搜尋控制代碼(通常由緊靠其前的_findfirst()返回)

// 返回值 : 成功返回0

//          出錯返回-1

c語言怎麼讀取某一資料夾下的所有資料夾和檔案?

3樓:14清榼眠

讀取的**方式如下:

int main()

printf("%s\n", find.name);

return 0;

}用c語言讀取目錄中的檔名的方法:

1、如果是在window環境下,可以用一下方法:

使用stdlib.h標頭檔案宣告的system()函式,呼叫系統命令dir,把c:目錄下檔案列表寫入檔案dir.txt中

2、使用dirent.h標頭檔案中宣告的opendir(),readdir()函式;

3、如果沒有dirent.h,可以使用io.h標頭檔案中宣告的_findfirst(),_findnext()函式:

4樓:cookie張贊

#include

#include

void main()

c:\下的所有資料夾,子資料夾裡所有檔案,轉向到 文字檔案 a.log 裡。

格式:c:\aaa\bbb\ccc\...

只要資料夾命令:

dir /d c: /b /ad

只要資料夾命令,含子資料夾:

dir /d c: /b /ad /s

c語言列出100以內的素數,C語言,列出100以內的素數

胡說八道小鬼 如下 include int main void int i,j,k printf d n 2 2肯定是素數 em02 for i 1 i 100 i 2 for j 2 jif i j 0 break if i j printf d n i return 0 從console輸入乙個...

c如何將使用完的儲存到指定目錄下的資料夾裡

string txt textbox1.text string filename temp.txt 檔名,可以帶路徑 system.io.streamwriter sw new system.io.streamwriter filename sw.write txt sw.close 選擇選單欄的 ...

c 中的state怎樣使用,c語言中state是什麼意思

作用 允許一個物件在其內部狀態改變時改變它的行為.state模式的定義 不同的狀態,不同的行為 或者說,每個狀態有著相應的行為.何時使用?state模式在實際使用中比較多,適合 狀態的切換 因為我們經常會使用if else if else 進行狀態切換,如果針對狀態的這樣判斷切換反覆出現,就要聯想 ...