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

пролетает gets в теле switch - C++

Восстановить пароль Регистрация
 
nuHrBuH
 Аватар для nuHrBuH
248 / 248 / 99
Регистрация: 04.03.2011
Сообщений: 590
22.01.2014, 12:54     пролетает gets в теле switch #1
не хочет запрашивать ввод строки, как будто строки gets(s); нету
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
while (v != 1 && v != 2)
    {
        cin >> v;
        switch(v)
        {
            case 1:
            {
                gets(s);
                strcat(s, ".txt");  
                ifstream in(s);
                
                                             // действия
 
                in.close();
                break;
            }
            case 2:
            {
                // действия
                break;
            }
            default:
            {
                // что-нибудь
                break;
            }
        }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2014, 12:54     пролетает gets в теле switch
Посмотрите здесь:

C++ Нахождение _export в теле extern
C++ Задача вычисляющая расстояние которое пролетает камень.
Пролетает cin >> C++
C++ Подскажите, чио писать в теле цикла if ele
C++ scanf() в теле цикла while
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kventin_zhuk
БНТУ ФИТР
 Аватар для kventin_zhuk
214 / 154 / 15
Регистрация: 26.12.2012
Сообщений: 382
22.01.2014, 12:58     пролетает gets в теле switch #2
nuHrBuH, добавьте перед gets fflush(stdin);
nuHrBuH
 Аватар для nuHrBuH
248 / 248 / 99
Регистрация: 04.03.2011
Сообщений: 590
22.01.2014, 13:06  [ТС]     пролетает gets в теле switch #3
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
nuHrBuH, добавьте перед gets fflush(stdin);
Спасибо, помогло. Что оно значит и зачем его ставить?
_script_
169 / 137 / 34
Регистрация: 01.05.2012
Сообщений: 414
22.01.2014, 13:06     пролетает gets в теле switch #4
Замените ввод V так)

C++
1
(cin >> v).get();
nuHrBuH
 Аватар для nuHrBuH
248 / 248 / 99
Регистрация: 04.03.2011
Сообщений: 590
22.01.2014, 13:10  [ТС]     пролетает gets в теле switch #5
Цитата Сообщение от _script_ Посмотреть сообщение
Замените ввод V так)

C++
1
(cin >> v).get();
Спасибо, тоже работает)
Только как?)
_script_
169 / 137 / 34
Регистрация: 01.05.2012
Сообщений: 414
22.01.2014, 13:13     пролетает gets в теле switch #6
Все нормально) если заменить там ввод, то не будет пропускать)
тут вот объясняется Не выполняется функция getline()
kventin_zhuk
БНТУ ФИТР
 Аватар для kventin_zhuk
214 / 154 / 15
Регистрация: 26.12.2012
Сообщений: 382
22.01.2014, 13:14     пролетает gets в теле switch #7
nuHrBuH, nuHrBuH, fflush - очистка буфера. В данном случае буфера ввода. Т.к после ввода строк в буфере ввода остается лишний символ - символ перевода строки. Но лучше заменили бы gets на getline, это в стиле C++.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.01.2014, 16:18     пролетает gets в теле switch #8
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
nuHrBuH, добавьте перед gets fflush(stdin);
Использовать fflush() для потока чтения - не есть хорошо. http://www.cplusplus.com/reference/c...ush/?kw=fflush
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2014, 17:20     пролетает gets в теле switch
Еще ссылки по теме:

C++ Инициализация в теле конструктора или в списке инициализации.
C++ Ошибка в теле цикла, синтаксис
C++ Работа в теле конструктора

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
22.01.2014, 17:20     пролетает gets в теле switch #9
В С++ такие проблемы решаются через
C++
1
std::cin.ignore()
Это игнорирует первый символ, переданный потоку - а это "\n", оставшийся с прошлого ввода и нажатия "Enter".
Yandex
Объявления
22.01.2014, 17:20     пролетает gets в теле switch
Ответ Создать тему
Опции темы

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