Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список файлов 
:(
    Опции темы
Garry
  Дата 26.3.2002, 22:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как получить список файлов в текущем каталоге???
  Вверх
TwoK
  Дата 26.3.2002, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



Админ, не пора ли faq-страницу создать на нашем форуме?

Отвечаю 4-й раз. Первые 3 благополучно умерли вместе со старым форумом, поэтому отвечаю еще раз :D

Код

//эта штука ищет сначала все файлы по маске mask в папке path,
//а затем во всех подпапках

#include <winbase.h>  //если не ошибаюсь, посмотри в help

void FindDir(char* path,char* mask)
{
   WIN32_FIND_DATA wfnd;
   HANDLE hfound;
   char newpath[MAX_PATH];
   char fpath[MAX_PATH];
   strcpy(fpath,path);
   strcat(fpath,"\\");
   strcat(fpath,mask);
   if(hfound=FindFirstFile(fpath,wfd))
   {
           if(!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))
           {
//значит нашли первый файл в папке path
//и делаем что-нибудь
           }
           while(FindNextFile(hfound,wfd))
           {
               if(!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))
               {
           //значит нашли еще файл в папке path
   //и делаем что-нибудь
               }
           }
   }
   FindClose(hfound);//поиск файлов закончили, теперь ищем подпапки
   strcpy(fpath,path);
   strcat(fpath,"\\*.*");
   if(hfound=FindFirstFile(fpath,wfd))
   {
           if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))
           {
strcpy(newpath,path);
strcat(newpath,"\\");
strcat(newpath,wfd.cFileName);
FindDir(newpath,mask); //ЭТО НАЗЫВАЕТСЯ "РЕКУРСИЯ"
           }
           while(FindNextFile(hfound,wfd))
           {
           if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))
           {
strcpy(newpath,path);
strcat(newpath,"\\");
strcat(newpath,wfd.cFileName);
FindDir(newpath,mask); //ЭТО НАЗЫВАЕТСЯ "РЕКУРСИЯ"
           }
           }
   }
}


Вот.


--------------------
Говорят, что население в стране все меньше и меньше. А народу по утрам в метро почему-то все больше и больше...
PM MAIL   Вверх
Dicobraz
Дата 28.3.2002, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 26.3.2002
Где: Пермь

Репутация: нет
Всего: нет



на самом деле, можно немного проще.
1. упростить алгоритм (писать лень, сорри)
2. использовать CFileDialog (VC++) :).

В зависимости от задачи. Так что конкретнее, КОНКРЕТНЕЕ!
PM MAIL ICQ   Вверх
AI0
Дата 7.1.2008, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



А как, например, с ними работать в *nix-ах?
Например я хочу чтобы программа в текущем каталоге искала файлы с определённым расширением, например *.jpg, а потом записывала все их названия в массив, а дальше сам разберусь(если получится smile ). 

Вот ещё нескромный вопрос:
Что означает двойная звёздочка?
char **vasia
PM MAIL Jabber   Вверх
warmonger_
Дата 7.1.2008, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

Репутация: 1
Всего: 3



юзай dirent.h
--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
JackYF
Дата 7.1.2008, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(AI0 @  7.1.2008,  16:31 Найти цитируемый пост)
char **vasia 

указатель на указатель. Читай учебник по С++.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.