Проблема с получением списка файлов С++

189
20 апреля 2017, 17:47

Имеется проблема с получением списка файлов. Функция выполняется. Но на определенном моменте просто стопорится. И все.

int main(){
catalogs ctlss;
catalogs * ctls = &ctlss;
int length = 0;
int * len = &length;
STRSAFE_LPWSTR dir = L"C:";
toms t;
toms * tm = &t;
get_toms(tm);
for (int i = 0; i < t.length; i++) {
    std::wcout << "CYCLE_DISK: " << t.names[i] << std::endl;
     }
for (int i = 0; i < t.length; i++) {
    get_paths_arguments(t.names[i], ctls, len);
     }
for (int i = 0; i < ctls->length; i++) {
    std::wcout << "LENGTH: " << ctls->length << std::endl;
    std::wcout << ctls->catls[i].name;
    std::wcout.flush();
    }
}
int get_paths_arguments(STRSAFE_LPWSTR dir, catalogs * ctls, int *len)
    {
    WIN32_FIND_DATA ffd;
    TCHAR szDir[MAX_PATH];
    size_t length_of_arg;
    HANDLE hFind = INVALID_HANDLE_VALUE;
    DWORD dwError = 0;
    std::wcout << dir << std::endl;
    StringCchLength(dir, MAX_PATH, &length_of_arg);
    StringCchCopy(szDir, MAX_PATH, dir);
    StringCchCat(szDir, MAX_PATH, TEXT("\\*"));
    hFind = FindFirstFile(szDir, &ffd);
    if (INVALID_HANDLE_VALUE == hFind)
    {
        return 1;
    }
    do
    {
        std::wcout << L"dir + cFileName: " <<std::wstring(dir) + std::wstring(ffd.cFileName) << std::endl;
        try {
            if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            {
                if (!(std::wstring(L".") == std::wstring(ffd.cFileName)) && !(std::wstring(L"..") == std::wstring(ffd.cFileName))) {
                    std::wstring line = dir + std::wstring(L"\\") + std::wstring(ffd.cFileName);
                    std::wcout << L"DIR_LINE: " << line << std::endl;
                    STRSAFE_LPWSTR direct = dir + *ffd.cFileName;
                    get_paths_arguments((STRSAFE_LPWSTR)line.c_str(), ctls, len);
                }
                else {
                }
            }
            else
            {
                ctls->catls[*len].name = std::wstring(dir) + std::wstring(L"\\") + std::wstring(ffd.cFileName);
                *len = *len + 1;
                ctls->length = *len;
            }
        }
        catch (std::exception &e) {
            std::wcout << L"EXCEPTION: " << e.what() << std::endl;
            continue;
        }
    } while (FindNextFile(hFind, &ffd));
    dwError = GetLastError();
    FindClose(hFind);
return 0;
    }

Задача состоит в том что бы получить рекурсивно все файлы и папки на диске. При этом некоторые строки даже не допечатываются до конца. Просто все останавливается и консоль ждет завершения процессов. И ничего больше не происходит. Подскажите пожалуйста, В чем может быть причина?

READ ALSO
xCode no matching function for call to

xCode no matching function for call to

Есть массив объектов в формате jsonЧто то не могу запустить функцию удаления дубликатов объектов

254
Точка входа не найдена _ZNSt7_

Точка входа не найдена _ZNSt7_

Доброй ночиучу C++ файл компилируется но при запуске выкидывает это

243
C++. Определение длины числа с нуля

C++. Определение длины числа с нуля

Нужно, чтоб программа понимала, что пользователь вводит 01 или 02, а не 1 или 2

199
Считать последнюю строку файла

Считать последнюю строку файла

Доброго времени суток! есть файл который имеет структуру(ниже), надо считать данныеДо последней строки получается

252