readdir 是一個用于讀取目錄內(nèi)容的函數(shù),通常在 C/c++ 語言中使用。要使用 readdir 實現(xiàn)目錄比較,你需要遵循以下步驟:
- 包含必要的頭文件:
#<span>include <dirent.h></span> #<span>include <stdio.h></span> #<span>include <stdlib.h></span> #<span>include <string.h></span>
- 定義一個函數(shù)來讀取目錄內(nèi)容并將其存儲在一個字符串?dāng)?shù)組中:
int read_directory(<span>const char *path, char ***files)</span> { DIR *dir = opendir(path); if (!dir) { perror("opendir"); return -1; } <span>struct dirent *entry;</span> int count = 0; while ((entry = readdir(dir)) != NULL) { count++; } closedir(dir); *files = (char **)malloc(sizeof(char *) * count); if (!*files) { perror("malloc"); return -1; } dir = opendir(path); if (!dir) { perror("opendir"); return -1; } int i = 0; while ((entry = readdir(dir)) != NULL) { (*files)[i] = strdup(entry->d_name); i++; } closedir(dir); return 0; }
- 定義一個函數(shù)來比較兩個字符串數(shù)組:
int compare_directories(<span>const char **dir1, int size1, const char **dir2, int size2)</span> { if (size1 != size2) { return 0; } for (int i = 0; i < size1; i++) { if (strcmp(dir1[i], dir2[i]) != 0) { return 0; } } return 1; }
- 在 main 函數(shù)中調(diào)用這些函數(shù)來比較兩個目錄:
int main() { char **dir1_files, **dir2_files; int dir1_size, dir2_size; dir1_size = read_directory("path/to/dir1", &dir1_files); dir2_size = read_directory("path/to/dir2", &dir2_files); if (dir1_size == -1 || dir2_size == -1) { fprintf(stderr, "Error reading directoriesn"); return 1; } int result = compare_directories(dir1_files, dir1_size, dir2_files, dir2_size); if (result) { printf("Directories are the samen"); } else { printf("Directories are differentn"); } for (int i = 0; i < dir1_size; i++) { free(dir1_files[i]); } free(dir1_files); for (int i = 0; i < dir2_size; i++) { free(dir2_files[i]); } free(dir2_files); return 0; }
這個示例程序?qū)⒈容^兩個目錄(path/to/dir1 和 path/to/dir2)的內(nèi)容,并輸出它們是否相同。請注意,這個程序僅比較目錄中的文件和子目錄名稱,而不比較文件內(nèi)容或?qū)傩浴?/p>