Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Вадим77
1 / 1 / 0
Регистрация: 21.04.2016
Сообщений: 116
1

Вывести список файлов и каталогов

29.06.2017, 14:29. Просмотров 433. Ответов 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
#include <iostream>
#include <Windows.h>  
 
using namespace std;
 
FILE* fp;
 
 
int main(int argc, char *argv[])
{
 
    WIN32_FIND_DATA FindFileData;
    HANDLE hf;
    LPCWSTR s = L"c:\\*.*";
    hf = FindFirstFile(s, &FindFileData);
    if (hf != INVALID_HANDLE_VALUE) {
        do {
            printf("%s\n", FindFileData.cFileName);
        } while (FindNextFile(hf, &FindFileData) != 0);
        FindClose(hf);
    }
 
    system("pause");
    return 0;
}
Выводит список:
$
b
B
D
G
h
I
L
M
p
P
P
P
P
R
s
S
U
W
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2017, 14:29
Ответы с готовыми решениями:

Вывести на экран список файлов и каталогов в текущей директории
Помогите написать программу, работающую в текстовом режиме (ширина экрана равна 80 столбцов),...

Вывести список файлов в каталоге
Напишите программу, которая составляет список файлов, расположенных в каталоге, имя которого...

Вывести список файлов каталога
Задача чуть другая, но напишите такой пример пожалуйста.

Удаление файлов из каталогов
Помогите написать программу, которая позволяет удалять из каталога =(( Вот надо сначало создать...

Сортировка каталогов и файлов
Нужно создать программу выполняющую сортировку каталогов и файлов различными методами (напр.: по...

4
h3mbr0
294 / 104 / 30
Регистрация: 12.03.2012
Сообщений: 419
29.06.2017, 14:31 2
в printf %s заменить на %S
либо сам printf на wprintf
1
Вадим77
1 / 1 / 0
Регистрация: 21.04.2016
Сообщений: 116
29.06.2017, 15:08  [ТС] 3
Добавлено через 35 минут
Поторопился я с ответом. Помогло конечно. Когда ввожу другой путь - пусто. А на диске d: выдает не все каталоги
0
h3mbr0
294 / 104 / 30
Регистрация: 12.03.2012
Сообщений: 419
29.06.2017, 17:01 4
В каком смысле не все? Если имеете ввиду подкаталоги, то для каждого нужно выполнять проход рекурсивно

Добавлено через 15 минут
Вот это когда-то писал для подсчета файлов, нетрудно переделать ее для распечатки:
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
static int_fast32_t CountFilesInDir(const wchar_t *path) {
  int_fast32_t count = 0;
 
  size_t len = wcsnlen_s(path, MAX_PATH + 1);
  if (len == 0 || len > MAX_PATH)
    return -1;
 
  wchar_t dir[MAX_PATH + 1];
  if (wcscpy_s(dir, MAX_PATH + 1, path) != 0 || PathAddBackslashW(dir) == NULL || wcscat_s(dir, MAX_PATH + 1, L"*") != 0)
    return -1;
 
  len = wcsnlen_s(dir, MAX_PATH + 1) - 1;
 
  WIN32_FIND_DATAW ffd;
  HANDLE hFind = FindFirstFileW(dir, &ffd);
  if (hFind == INVALID_HANDLE_VALUE)
    return -1;
 
  do {
    if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // count files in subfolder
    {
      if (wcscmp(ffd.cFileName, L".") != 0 && wcscmp(ffd.cFileName, L"..") != 0) {
        dir[len] = L'\0'; // trunc dir to base path
        if (wcscat_s(dir, MAX_PATH + 1, ffd.cFileName) != 0)
          return -1;
 
        int_fast32_t sub_count = CountFilesInDir(dir);
        if (sub_count < 0)
          return -1;
        else
          count += sub_count;
      }
    } else
      count++;
  } while (FindNextFileW(hFind, &ffd) != 0);
 
  return count;
}
единственная проблема - работает с путями не длиннее MAX_PATH
1
Вадим77
1 / 1 / 0
Регистрация: 21.04.2016
Сообщений: 116
29.06.2017, 18:22  [ТС] 5
Например там каталогов 20, а показывает в консоли 10.
0
29.06.2017, 18:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2017, 18:22

Вывести список всех файлов из указанной директории, имена которых содержат русские буквы
Доброго времени суток, данная программа написана, но, помогите понять, как ввести директорию с...

Вывести список всех файлов из указанной директории, имена которых содержат русские буквы
Помогите с заданием, заранее спасибо! Вывести список всех файлов из указанной директории, имена...

Вывести на экран в текущем каталоге имена тех каталогов, которые в себе не содержат подкаталогов
Здравствуйте.. Выдали данное задание на С++ под linux Разработать программу, которая выводит на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru