Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
6 / 6 / 3
Регистрация: 06.03.2011
Сообщений: 269
1

Проверка ввода зацикливается

04.09.2012, 21:33. Показов 2392. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть одна функция ввода:
C
1
2
3
4
5
6
7
8
9
void input( double *d, double *x, double *y ) {
    for(;;) {
        printf( "Enter d, x, y: " );
        if( scanf("%lf %lf %lf", d, x, y) == 3 &&
            (*d > 0.0 && *x > 0.0 && *y > 0.0) ) return;
        
        printf( "Error. Try again.\n\n" );
    }
}
Когда ввожу, например, 'a' – срабатывает бесконечный цикл с сообщением об ошибке. Как это исправить?
Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2012, 21:33
Ответы с готовыми решениями:

Зацикливается программа при проверке корректность ввода
Добавил в программу проверку на корректный ввод: flag=scanf("%d",&l.num); while (1>flag) ...

Почему программа себя странно ведет: зацикливается после ввода значений?
Зацикливается после воода значений. Подскажите пожалуйста в чем может быть проблема. #include...

Visual C++ проверка ввода на число, проверка на кирилицу
Суть ввести с клавиатуры нечто, и повторять ввод до тех пор пока введенное число не будет числом. ...

Проверка ввода
Была проверка на ввод букв 'a', 'b' и 'c'. Если было введено "abbcba" то значения брались, а если...

4
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
04.09.2012, 22:21 2
может
C
1
scanf("%lf %lf %lf", *d, *x, *y) == 3
1
Заблокирован
04.09.2012, 22:29 3
Leomana, нет, там все правильно. Единственное что - пробелы не нужны.
vortexx1, https://www.cyberforum.ru/blogs/42536/blog278.html
2
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
04.09.2012, 22:32 4
ну у меня не зацикливается... может вводите что не так)
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.09.2012, 05:34 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Leomana Посмотреть сообщение
ну у меня не зацикливается
а должно

Цитата Сообщение от vortexx1 Посмотреть сообщение
Как это исправить?
fgets() + sscanf()

либо

C
1
2
while ((c = getchar()) != EOF && c != '\n')
    ;
и у тебя там вообще не рассматривается случай, когда ввод закончился
1
05.09.2012, 05:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2012, 05:34
Помогаю со студенческими работами здесь

gets() проверка ввода
возникло слабое звено в программке ... max_length = 100; line = new char; ... gets(line);...

C++ проверка ввода
Ребят помогить пожалуста разобраться не работает чертова проверка ввода я в коментарии вынес текст...

проверка ввода
Добрый день! Как проверить ввел ли символ пользователь символ заместо цифры. Сомо собой if, но у...

Проверка ввода
День добрый. Нужно сделать проверку на ввод. Если цифры - все ок, НЕцифры - выдать ошибку. Не пойму...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru