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

Рекурсивный поиск файла. Падаю - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сравнение чисел http://www.cyberforum.ru/cpp-beginners/thread1061269.html
Привет всем!Люди помогите написать программ,которая сравнивает три числа и выдает наибольшее и наименьшее из них.Задача из книги Дейтелов. Всем заранее спасибо)
C++ Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее Дано задание: Дана действительная квадратная матрица порядка 7. Вычислить сумму тех её элементов, расположенных на главной диагонали и выше нее, которые превосходят по величине все элементы, расположенные ниже главной диагонали. Заменить этой суммой элемент на главной диагонали соответствующего столбца. Если на главной диагонали и выше нее нет элементов с указанным свойством, то... http://www.cyberforum.ru/cpp-beginners/thread1061257.html
C++ Дана строка символов. Распечатать ее в обратном порядке, сохранив лишь порядок следования цифр
помогите плиз решить задачу по с++. 9. Дана строка символов. Распечатать ее в обратном порядке, сохранив лишь порядок следования цифр (например, ‘asdf %e456tyh’ должна быть выведена как ‘hyt456e% fdsa’).
C++ Матрицы. Рассмотрим те элементы, которые расположены в строках, начинающихся с отрицательного элемента
Дана действительная квадратная матрица порядка . Рассмотрим те элементы, которые расположены в строках, начинающихся с отрицательного элемента. Найти суммы тех из них, которые расположены соответственно ниже, выше и на главной диагонали.
C++ Нужно написать задачи по с++ http://www.cyberforum.ru/cpp-beginners/thread1061251.html
1. Дано натуральное число n . Выяснить, сколько положительных элементов содержит матрица i,j=1,...,n , если: Aij=sin(i+(j/2)) ; одна тема - одна задача. читайте правила форума
C++ Двумерный динамический массив - найти ошибку в коде #include <iostream> #include <conio.h> using namespace std; class Matrix { private: int lenght; int width; int** matrix; подробнее

Показать сообщение отдельно
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 981
Регистрация: 02.05.2013
Сообщений: 10,297
Завершенные тесты: 1
01.01.2014, 12:51     Рекурсивный поиск файла. Падаю
Да тут ошибка чуть ли не в каждой строке кода.

Цитата Сообщение от TamaGOch Посмотреть сообщение
C++
1
std::wstring FindFile (std::wstring Directory, std::wstring FileName)
Эффективнее передавать аргументы по ссылке/указателю. Лучше const.

C++
1
if (FileData.dwFileAttributes == 16 || FileData.dwFileAttributes == 17) //Если нашли папку
Неточность. У папки могут быть и другие атрибуты.
Здесь следует использовать проверку конкретных битов - FILE_ATTRIBUTE_DIRECTORY (0x10), например:
C++
1
2
3
4
if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
    // ...
}
Кроме этого, не следует забывать про reparse points.
Они имеют атрибут директории, но ведут себя совсем по-другому.

C++
1
if (FileData.cFileName [0] != '.')
Кроме ".", есть еще ".." - тоже надо проверять.

C++
1
if (std::wstring (FileData.cFileName) == FileName) //Сравниваем с требуемым именем файла
И это тоже ненадежно. Например, вы ищете файл "program.exe", а на диске он
записан под видом "PROGRAM.EXE" - в итоге поиск завершится неудачей.
Здесь точнее будет использовать какую-нибудь функцию сравнения строк без учета регистра.
Например, lstrcmpi, а еще лучше CompareString.

C++
1
while (FindNextFile (hFind, &FileData) == true);
И это неверно.
Про FindNextFile MSDN говорит, что "if the function succeeds, the return value is nonzero".
Nonzero - это любое значение, отличное от нуля, вовсе необязательно 1/true.

Ну и напоследок:
C++
1
if (hFind != INVALID_HANDLE_VALUE) //Если директория не пуста
А если hFind будет равно INVALID_HANDLE_VALUE, что вернет функция ?
 
Текущее время: 17:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru