Почему используете wchar, а не char?
Добавлено через 10 минут
wcsncat - конкатенирует две строки, первый аргумент куда, второй что, третий длину,
почему вы используете sizeof, а не длину строки?
Я ваш код взял, изменил только на char, ибо у меня на билдере FindFirstFile требует char. Выводит список файлов.
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
| int main()
{
char *p = new char;
cin >> p;
vector<string> Files(0); // вектор с файлами
char* Buffer = new char[strlen(p)] ; // создание массива символов для приведения типа переменной пути
Buffer = strcpy(Buffer, p);
Buffer = strcat(Buffer, "\\*.*");
//mbstowcs(Buffer, p.c_str(), p.length()); // преобразование переменной в массив widechar
//Directories.emplace_back(p); // занесение введенного пользователем пути в массив-
//wcsncat(Buffer, L"\\*.*", sizeof(L"\\*.*"));
WIN32_FIND_DATA FindFileData; // переменная структуры информации о директории или файле
HANDLE hf; // переменная под хендл файла
wcout << Buffer << endl;
hf = FindFirstFile(Buffer, &FindFileData); // поиск первого файла в введенной пользователем директории и занесение в переменную
if (hf == INVALID_HANDLE_VALUE)
{ // Если хендлер не содержит дескриптор файла или директории
cout << "Invalid_handle_val \n" << endl; // выводим сообщение
cout << "What to do?";
system("pause"); // переводим программу в режим ожидания
}
else
{
do {
cout << FindFileData.cFileName << endl;
} while(FindNextFile(hf, &FindFileData));
FindClose(hf);
}
system("pause");
//getchar();
return 0;
} |
|