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

Работа со строкой. Не могу разобраться, в чём ошибка. - C++

Восстановить пароль Регистрация
 
Диман56
22 / 22 / 0
Регистрация: 07.11.2011
Сообщений: 154
15.11.2011, 13:27     Работа со строкой. Не могу разобраться, в чём ошибка. #1
Есть такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
HANDLE Search;//Объявляем хендл
WIN32_FIND_DATAA FileSearch;//Создаем структуру типа WIN32_FIND_DATAA
Hand:printf("\nEnter the path:");//Просим ввести путь
getchar();//
gets(di);//Вводим путь
strcat(di, "*");//Создаем маску объединением пути и маски поиска(*-искать всё)
Search=FindFirstFileA(di, &FileSearch);//Приравниваем хендл к хендлу, возвращаемому функцией FindFirstFileA(di, &FileSearch). 1 параметр-путь к директории, 2-адрес структуры WIN32_FIND_DATAA
if(Search==INVALID_HANDLE_VALUE)//Если хендл неверный(функция возвратила INVALID_HANDLE_VALUE), то....
{
printf("\nError!Re-enter\n");//Говорим, что ошибкa
Sleep(500);//Ждем 0.5 секунды
goto Hand;//Переходим к повтору ввода
}
else//Если всё нормально, то дальше не важно
Итак, если заведомо неправильно ввести путь, то при повторе(и правильном вводе пути) программа все равно пишет Error!Re-enter. Где грабли?

Добавлено через 25 минут
?????
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2011, 13:27     Работа со строкой. Не могу разобраться, в чём ошибка.
Посмотрите здесь:

C++ Не могу понять в чём ошибка
C++ ошибка в коде,не могу разобраться
Не могу разобраться в чём ошибка C++
Не могу разобраться в чём ошибка(инфиксная и постфиксная запись выражения) C++
C++ Не могу разобраться в чем ошибка
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DKOI
 Аватар для DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
15.11.2011, 13:32     Работа со строкой. Не могу разобраться, в чём ошибка. #2
Вы бы это, строчечку-то, обнуляли перед считыванием.

Добавлено через 1 минуту
Да и структуру FileSearch обнулить не помешало бы.
И вообще - goto это плохой стиль...
Диман56
22 / 22 / 0
Регистрация: 07.11.2011
Сообщений: 154
15.11.2011, 14:27  [ТС]     Работа со строкой. Не могу разобраться, в чём ошибка. #3
1.Как обнулить? memcpy пробовал-не помогло.
2. А структуру как?

Добавлено через 13 минут
?????

Добавлено через 36 минут
Исправил. Во всем оказался виноват getchar();
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HANDLE Search;//Объявляем хендл
WIN32_FIND_DATAA FileSearch;//Создаем структуру типа WIN32_FIND_DATAA
getchar();//
Hand:printf("\nEnter the path:");//Просим ввести путь
gets(di);//Вводим путь
strcat(di,"*");//Создаем маску объединением пути и маски поиска(*-искать всё)
Search=FindFirstFileA(di, &FileSearch);//Приравниваем хендл к хендлу, возвращаемому функцией FindFirstFileA(di, &FileSearch). 1 параметр-путь к директории, 2-адрес структуры WIN32_FIND_DATAA
if(Search==INVALID_HANDLE_VALUE)//Если хендл неверный(функция возвратила INVALID_HANDLE_VALUE), то....
{
printf("\nError!Re-enter\n");//Говорим, что ошибкa
Sleep(500);//Ждем 0.5 секунды
ZeroMemory(di,sizeof(di));
goto Hand;//Переходим к повтору ввода
}
else//Если всё нормально, то дальше не важно
-=ЮрА=-
Заблокирован
Автор FAQ
15.11.2011, 14:39     Работа со строкой. Не могу разобраться, в чём ошибка. #4
Цитата Сообщение от Диман56 Посмотреть сообщение
Итак, если заведомо неправильно ввести путь, то при повторе(и правильном вводе пути) программа все равно пишет Error!Re-enter. Где грабли?
- вот вам код
Поиск файла по шаблону
оператором goto вы вообще в зацикливание уйти можите...
Yandex
Объявления
15.11.2011, 14:39     Работа со строкой. Не могу разобраться, в чём ошибка.
Ответ Создать тему
Опции темы

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