linux C讀目錄下面 的 所有檔案名字

2021-09-10 09:17:10 字數 2058 閱讀 7290

任務需求: 讀取某個目錄下的所有檔案的名字,並且將讀取的名字,作為引數逐個傳入處理函式

需要考慮的是,不同的目錄下面,檔案的個數不是固定的

檔案名字的長度也不是韌體的

那麼 怎麼儲存這個讀取的結果,並且傳給其他函式使用呢。

#include #include #include #include #include char img_path[500][1000];

int img_num=0;

int readfilelist(char *basepath)

while ((ptr=readdir(dir)) != null)

else

}closedir(dir);

return 1;

}int main()

實現2
#include #include #include #include #include int readfilelist(char *basepath)

while ((ptr=readdir(dir)) != null)

}closedir(dir);

return 1;

}int main(void)

參考網頁

在linux系統下,用c語言讀取當前目錄下的檔名和子目錄名,將名稱按照ascii碼公升序排序後列印到螢幕上

目標:利用linux命令獲取當前目錄下的檔案和子目錄名稱,然後傳遞給c語言程式

由c語言程式對其進行排序,然後輸出

dirent.h

linux系統下的乙個標頭檔案,在這個目錄下/usr/include,為了獲取某資料夾目錄內容,所使用的結構體。引用標頭檔案

#include

struct dirent

scandir()

#include

int scandir( const char *dir,

struct dirent ***namelist,

int (*filter) (const void *b),

int ( * compare )( const struct dirent **, const struct dirent ** ) );

int alphasort(const void **a, const void **b);

int versionsort(const void **a, const void **b);

當函式成功執行時返回找到匹配模式檔案的個數,如果失敗將返回-1。

函式scandir掃瞄dir目錄下以及dir子目錄下滿足filter過濾模式的檔案,返回的結果是compare函式經過排序的,並儲存在 namelist中。注意namelist是通過malloc動態分配記憶體的,所以在使用時要注意釋放記憶體。alphasort和versionsort 是使用到的兩種排序的函式。

readir()也可讀取列表,但是無法實現排序

#include #include #include #include #include #include void print_dir(char *path, int depth)

else

free(name_list);

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

else

printf("directory scan of %s\n",now_dir);

print_dir(now_dir,0);

printf("finish.\n");

exit(0);

}

有空 看一下 一下 函式的 底層 實現方式

strcat

#if 0

memset(base, '\0', sizeof(base));

strcpy(base, basepath);

strcat(base, "/");

strcat(base, ptr->d_name);

readfilelist(base);

#endif

(稍後補充)

BASH 執行目錄下面的所有指令碼

問題 你期望執行一系列的指令碼,這些指令碼名字不斷變化,並且你總是不停的新增新的指令碼,但是你不希望總是更改主指令碼。解決方案 將所有要執行的指令碼放入同乙個目錄,讓 bash 去執行。bash 去查詢目錄下的指令碼而不是維護乙個要執行的指令碼的列表。for script in path to sc...

Java API 讀取HDFS目錄下的所有檔案

獲取1號店生鮮食品的分類id字串 param filepath return public string getyhdsxcategoryidstr string filepath final string inner delimiter 遍歷目錄下的所有檔案 bufferedreader br n...

shell備份,重新命名,刪除目錄下面的檔案

因為經常會用到shell指令碼,所以經常會寫一些,但是我從來沒有系統的學習過shell指令碼,遇到問題,就去看手冊,或者google一下,到了一定的程度才發現自己的基礎真的好差。下面在系統學習shell時,順便寫了點有用的小指令碼。1,備份目錄下面檔案 bin bash e badargs 65 c...