在 C 編程語言中,copendir() 函數(shù)用于打開指定的目錄,并返回一個指向 DIR 類型結(jié)構(gòu)的指針,供后續(xù)對目錄的操作使用。要讀取目錄中的條目,則需要配合 readdir() 函數(shù)一起使用。下面是一段示例代碼,演示了如何利用 copendir() 和 readdir() 遍歷某個目錄下的所有文件和子目錄:
#include <stdio.h> #include <stdlib.h> #include <dirent.h> int main() { DIR *dir; struct dirent *entry; // 打開當(dāng)前工作目錄 dir = opendir("."); if (dir == NULL) { perror("opendir"); return EXIT_FAILURE; } // 逐個讀取目錄項(xiàng) while ((entry = readdir(dir)) != NULL) { printf("%sn", entry->d_name); } // 關(guān)閉已打開的目錄流 closedir(dir); return EXIT_SUCCESS; } </dirent.h></stdlib.h></stdio.h>
各函數(shù)作用說明:
- opendir():此函數(shù)負(fù)責(zé)打開指定路徑的目錄,并返回一個 DIR 指針。若打開失敗則返回 NULL。
- readdir():該函數(shù)用于從已經(jīng)打開的目錄流中讀取下一個目錄項(xiàng)。它會返回一個 dirent 結(jié)構(gòu)指針,其中包含諸如文件名(d_name)等信息。
- closedir():用來關(guān)閉之前通過 opendir() 打開的目錄流。
使用提示:
- readdir() 返回的結(jié)構(gòu)體中,d_name 成員是以空字符結(jié)尾的字符串,代表當(dāng)前目錄項(xiàng)的名字。
- 在完成目錄操作后,務(wù)必調(diào)用 closedir() 來釋放系統(tǒng)資源。
- 如果發(fā)生錯誤,可以借助 perror() 輸出詳細(xì)的錯誤信息。
上述程序?qū)⒋蛴‘?dāng)前目錄下所有的文件及子目錄名稱。如需訪問其他目錄內(nèi)容,只需將 “.” 替換為對應(yīng)的有效路徑即可。