在C語言中,可以使用opendir
、readdir
和closedir
等函數來遍歷目錄。下面是一個簡單的示例代碼,可以遍歷指定目錄下的所有文件和子目錄:
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
int main() {
DIR *dir;
struct dirent *ent;
// 打開目錄
dir = opendir("目錄路徑");
if (dir == NULL) {
printf("無法打開目錄\n");
return 1;
}
// 逐個讀取目錄項
while ((ent = readdir(dir)) != NULL) {
// 忽略當前目錄(.)和上級目錄(..)
if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) {
continue;
}
// 輸出目錄項名稱
printf("%s\n", ent->d_name);
// 判斷目錄項類型
if (ent->d_type == DT_DIR) {
// 如果是子目錄,則可以遞歸遍歷子目錄
// 例如:遞歸遍歷子目錄 dir/subdir
char subdir[256];
snprintf(subdir, sizeof(subdir), "%s/%s", "目錄路徑", ent->d_name);
printf("子目錄:%s\n", subdir);
}
}
// 關閉目錄
closedir(dir);
return 0;
}
注意:
<dirent.h>
和<sys/types.h>
,以及使用-ldir
選項鏈接庫libdir
。readdir
函數會返回目錄中的每個目錄項,包括普通文件、子目錄、特殊目錄(“.“和”…”),可以通過d_type
成員判斷目錄項類型。snprintf
函數構建子目錄的路徑,實現遞歸遍歷子目錄。