Чтобы получить все элементы текущего каталога в C, вы можете использовать следующие методы:
-
Использование dirent.h и opendir():
#include <dirent.h> int main() { DIR *dir; struct dirent *entry; dir = opendir("."); if (dir == NULL) { perror("opendir() error"); return 1; } while ((entry = readdir(dir)) != NULL) { printf("%s\n", entry->d_name); } closedir(dir); return 0; } -
Использование функций, специфичных для Windows (для платформ Windows):
#include <windows.h> int main() { WIN32_FIND_DATA findData; HANDLE hFind; hFind = FindFirstFile("*", &findData); if (hFind == INVALID_HANDLE_VALUE) { perror("FindFirstFile() error"); return 1; } do { printf("%s\n", findData.cFileName); } while (FindNextFile(hFind, &findData)); FindClose(hFind); return 0; } -
Использование POSIX-совместимых функций (для Unix-подобных систем):
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <dirent.h> int main() { struct dirent namelist; int count, i; count = scandir(".", &namelist, NULL, alphasort); if (count == -1) { perror("scandir() error"); return 1; } for (i = 0; i < count; i++) { printf("%s\n", namelist[i]->d_name); free(namelist[i]); } free(namelist); return 0; }
Эти методы выведут список всех элементов (файлов и каталогов) в текущем каталоге. Первый метод является наиболее переносимым и работает как в Windows, так и в Unix-подобных системах. Второй метод специфичен для платформ Windows, а третий метод использует POSIX-совместимые функции для Unix-подобных систем.