dirent h使用詳解

2021-09-30 14:42:03 字數 1469 閱讀 8047

linux下歷遍目錄的方法一般是這樣的

開啟目錄-》讀取-》關閉目錄

相關函式是

opendir -> readdir -> closedir

#include 

dir *opendir(const char *dirname);

struct dirent *readdir(dir *dirp);

int closedir(dir *dirp);

好了,三個函式都出來了,原型就是上面。

opendir用於開啟目錄,是類似於流的那種方式,返回乙個指向dir結構體的指標,引數*dirname是乙個字元陣列或者字串常量;

readdir函式用於讀取目錄,只有乙個引數,就是opendir返回的結構體指標,或者叫控制代碼更容易理解些吧。這個函式也返回乙個結構體指標 dirent *;

dir結構體定義

struct __dirstream   

;

typedef

struct __dirstream dir;

dirent的結構如下定義

struct dirent

結構體中

通過readdir函式讀取到的檔名儲存在結構體dirent的d_name成員中,而函式

int stat(const char *file_name, struct stat *buf);的作用就是獲取檔名為d_name的檔案的詳細資訊,儲存在stat結構體中。以下為stat結構體的定義:

struct stat ;
這個記錄的資訊就很詳細了吧.

最後,總結一下,想要獲取某目錄下(比如a目下)b檔案的詳細資訊,我們應該怎樣做?

首先,我們使用opendir函式開啟目錄a,返回指向目錄a的dir結構體c。

接著,我們呼叫readdir( c)函式讀取目錄a下所有檔案(包括目錄),返回指向目錄a下所有檔案的dirent結構體d。

然後,我們遍歷d,呼叫stat(d->name,stat *e)來獲取每個檔案的詳細資訊,儲存在stat結構體e中。

總體就是這樣一種逐步細化的過程,在這一過程中,三種結構體扮演著不同的角色。

#include 

#include

#include

#include

#include

void print_usage(void);

void print_usage(void)

int main(int argc,char *ar**)

dp = opendir(ar**[1]);

if (!dp)

while (filename = readdir(dp))

closedir(dp);

return

0;}

Regmon使用詳解

新近安裝foxmail 5.0正式版,卻發現只能收取而不能傳送郵件。經過一番檢查確定,網路正常,foxmail設定也正確。那麼究竟是 何方神聖 在暗中搗鬼呢?甭急,咱先請來個 福爾摩斯 regmon幫忙查出 真兇 regmon v6.12小檔案 軟體版本 6.12 軟體大小 82 kb 軟體性質 免...

FCKeditor使用詳解

fckeditor 的.net 2.0核心庫 說明 fckeditor2.6.3.zip是其最新的檔案和什麼的 fckeditor.net.zip是asp.net呼叫的dll在裡面。2.分別解壓後把fckeditor2.6.3.zip裡的fckeditor目錄整個複製到 中。3.解壓fckedito...

c const使用詳解

關於c 中的const關鍵字的用法非常靈活,而使用const將大大改善程式的健壯性,現將本人的一些體會總結如下,期望對大家有所幫助 一 const基礎 如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況 int b 500 const int a b 1 int const a ...