readdir 函數是用于讀取目錄內容的 POSIX 函數,它在 <dirent.h> 頭文件中定義。在使用 readdir 函數時,可能會遇到一些錯誤,這些錯誤通常由全局變量 errno 表示。以下是一些常見的錯誤及其含義:
為了正確處理這些錯誤,你可以在調用 readdir 函數后檢查 errno 的值。以下是一個簡單的示例,展示了如何使用 readdir 函數并處理可能的錯誤:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <errno.h>
#include <string.h>
int main() {
DIR *dir;
struct dirent *entry;
// 打開目錄
dir = opendir(".");
if (dir == NULL) {
perror("opendir");
return EXIT_FAILURE;
}
// 讀取目錄內容
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
// 檢查 readdir 函數的錯誤
if (errno != 0) {
perror("readdir");
closedir(dir);
return EXIT_FAILURE;
}
// 關閉目錄
closedir(dir);
return EXIT_SUCCESS;
}
在這個示例中,我們首先使用 opendir 函數打開當前目錄(.)。如果 opendir 返回 NULL,則表示發生了錯誤,我們使用 perror 函數打印錯誤信息并返回 EXIT_FAILURE。
接下來,我們使用 readdir 函數讀取目錄內容。如果 readdir 返回 NULL,則表示已經到達目錄的末尾,或者發生了錯誤。在這種情況下,我們檢查 errno 的值以確定是否發生了錯誤。如果 errno 不為零,則表示發生了錯誤,我們使用 perror 函數打印錯誤信息,關閉目錄并返回 EXIT_FAILURE。
最后,我們使用 closedir 函數關閉目錄。