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 ...