Форум программистов, компьютерный форум CyberForum.ru

Поиск по файлам и директориям - C++

Восстановить пароль Регистрация
 
Озабоченный
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 13
27.12.2010, 11:37     Поиск по файлам и директориям #1
Здравствуйте! Как бы сделать программку на C++ производящую поиск по файлам и директориям? точнее, просто выдающая список файлов для заданной директории, включающей и поддиректории.
Нужно пользоваться структурой WIN_32_FIND_DATA. Но как это сделать пока непонятно

Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2010, 11:37     Поиск по файлам и директориям
Посмотрите здесь:

Задача по файлам C++
C++ Вопросы по файлам
Навигация по директориям C++
По текстовым файлам и строкам C++
C++ простой вопрос по файлам
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
27.12.2010, 13:05     Поиск по файлам и директориям #2
Пишите рекурсивную функцию, которая будет выводить название своего каталога, все файлы содержимого своего каталога и вызывать себя для подкаталогов.
Озабоченный
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 13
27.12.2010, 14:27  [ТС]     Поиск по файлам и директориям #3
Алгоритм ясен, но как именно оформить код неясно

Добавлено через 1 час 17 минут
Кстати можно ведь и без WIN32_FIND_DATA
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
27.12.2010, 15:47     Поиск по файлам и директориям #4
Цитата Сообщение от Озабоченный Посмотреть сообщение
Алгоритм ясен, но как именно оформить код неясно
Ишь, как выражовываешься. Это ты так хитро намекаешь, чтобы за тебя весь код написали?

Пример под катом.

Для института сойдет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <windows.h>
#include <cstdio>
 
void print_spaces(int n) {
  for (int i = 0; i < n; ++i)
    printf(" ");
}
 
void RecursivePrintTree(char *folder_name, int spaces=0, int space_step=2) {
  WIN32_FIND_DATA file_find_data;
  HANDLE file_find_handle;
  print_spaces(spaces * space_step);
  printf("- %s\n", folder_name);
 
  char *find_string = new char[strlen(folder_name)+5];
  strcpy(find_string, folder_name);
  strcat(find_string, "\\*.*");
 
  file_find_handle = FindFirstFile(find_string, &file_find_data);
  if (file_find_handle != INVALID_HANDLE_VALUE) {
    do {
      if (file_find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
        if ((strcmp(file_find_data.cFileName, ".") == 0) ||
            (strcmp(file_find_data.cFileName, "..") == 0)) {
          continue;
        }
        char *find_subdir = new char[strlen(folder_name)+1+
            strlen(file_find_data.cFileName) + 5];
        strcpy(find_subdir, folder_name);
        strcat(find_subdir, "\\");
        strcat(find_subdir, file_find_data.cFileName);
        RecursivePrintTree(find_subdir, spaces+1, space_step);
        delete [] find_subdir;
      } else {
        print_spaces((spaces + 1) * space_step);
        printf("- %s\n", file_find_data.cFileName);
      }
    } while (FindNextFile(file_find_handle, &file_find_data));
  }
  delete [] find_string;
}
 
int main(int argc, char *argv[]) {
  RecursivePrintTree("D:\\VIDEO");
 
  int key;
  scanf("%d", &key);
}
Озабоченный
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 13
27.12.2010, 15:56  [ТС]     Поиск по файлам и директориям #5
Спасибо большое за код:] Не то чтобы намекал, но хотелось;]
Yandex
Объявления
27.12.2010, 15:56     Поиск по файлам и директориям
Ответ Создать тему
Опции темы

Текущее время: 17:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru