У меня есть путь к папке, например
/ моя_папка
или в Windows:
C: \ моя_папка
и я хочу получить список всех файлов в этой папке. Как мне это сделать в C?
Отличается ли он в C ++ или C99?
Как получить список его папок?
Любая помощь приветствуется.
Вы можете использовать функции, объявленные в dirent.h
dirent.h - это заголовок в библиотеке C POSIX для языка программирования C, который содержит конструкции, облегчающие работу каталогаобходе.Функция не является частью стандарта C, но считается «псевдостандартом» и обычно переносима между платформами. http://en.wikipedia.org/wiki/Dirent.h
#include <dirent.h> int main(int argc, char **argv) { DIR *dir; struct dirent *de; dir = opendir("."); /*your directory*/ while(dir) { de = readdir(dir); if (!de) break; printf("%i %s\n", de->d_type, de->d_name); } closedir(dir); return 0; }
В операционных системах POSIX вы можете вызывать opendir () и readdir ().В Windows вы можете вызывать _findfirst () и _findnext ().Приложив немного усилий, вы можете реализовать свои собственные opendir () и readdir () как функции-оболочки в Windows, чтобы код вашего приложения мог использовать один и тот же API везде.Пример этого можно найти здесь .
Лучший подход в C ++ - использовать файловую систему boost.
Что касается C, вам потребуется API платформы (POSIX / WinAPI).
Документация POSIX + пример: http://www.opengroup.org/onlinepubs/009695399/functions/readdir.html
Обратите внимание на get_all_files_within_folder(), который я написал на C / C ++ здесь , на который я ответил на вопрос, аналогичный вашему. Это прекрасно работает для меня. Надеюсь, это поможет.
get_all_files_within_folder()
Это классическая задача, одно из возможных решений которой можно найти в Kernigan & Ritchie - Язык программирования Си (Глава 8.6). Суть задачи - рекурсивный обход целевой папки и ее подпапок.