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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nuHrBuH
249 / 249 / 99
Регистрация: 04.03.2011
Сообщений: 590
#1

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

22.01.2014, 12:54. Просмотров 407. Ответов 8
Метки нет (Все метки)

не хочет запрашивать ввод строки, как будто строки 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;
            }
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2014, 12:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос пролетает gets в теле switch (C++):

Пролетает cin >> - C++
Нужно заполнять вектор пока не введено 'x', потом сложить количество (введенное) первых элементов. После 'x' программа сразу...

Задача вычисляющая расстояние которое пролетает камень. - C++
Помогите разработать программу, вычисляющую расстояние, которое пролетит тело вдоль горизонтальной оси, брошенное в вакууме под углом α к...

Пролетает cin, после того как goto возвращается в начало программы - C++
Мне нужно сделать программу, которая будет исключать варианты ввода не целых чисел. Если вводить целое, то все работает нормально, а если...

Оптимальная конструкция switch-case-while / while-switch-case - C++
Имеется конструкция типа: switch() { case 1: while() { ... }

Работа в теле конструктора - C++
constructor Account::Account(int initialBalance) { if (initialBalance >= 0) balance = initialBalance; if (initialBalance <=...

scanf() в теле цикла while - C++
Почему не срабатывает функция scanf в теле цикла while в этом коде: #include <stdio.h> int main() { int reference_value =...

8
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
22.01.2014, 12:58 #2
nuHrBuH, добавьте перед gets fflush(stdin);
1
nuHrBuH
249 / 249 / 99
Регистрация: 04.03.2011
Сообщений: 590
22.01.2014, 13:06  [ТС] #3
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
nuHrBuH, добавьте перед gets fflush(stdin);
Спасибо, помогло. Что оно значит и зачем его ставить?
0
_script_
169 / 137 / 34
Регистрация: 01.05.2012
Сообщений: 414
22.01.2014, 13:06 #4
Замените ввод V так)

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

C++
1
(cin >> v).get();
Спасибо, тоже работает)
Только как?)
0
_script_
169 / 137 / 34
Регистрация: 01.05.2012
Сообщений: 414
22.01.2014, 13:13 #6
Все нормально) если заменить там ввод, то не будет пропускать)
тут вот объясняется Не выполняется функция getline()
1
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
22.01.2014, 13:14 #7
nuHrBuH, nuHrBuH, fflush - очистка буфера. В данном случае буфера ввода. Т.к после ввода строк в буфере ввода остается лишний символ - символ перевода строки. Но лучше заменили бы gets на getline, это в стиле C++.
1
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.01.2014, 16:18 #8
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
nuHrBuH, добавьте перед gets fflush(stdin);
Использовать fflush() для потока чтения - не есть хорошо. http://www.cplusplus.com/reference/cstdio/fflush/?kw=fflush
0
MrGluck
Модератор
Эксперт CЭксперт С++
7282 / 4443 / 650
Регистрация: 29.11.2010
Сообщений: 12,023
22.01.2014, 17:20 #9
В С++ такие проблемы решаются через
C++
1
std::cin.ignore()
Это игнорирует первый символ, переданный потоку - а это "\n", оставшийся с прошлого ввода и нажатия "Enter".
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2014, 17:20
Привет! Вот еще темы с ответами:

Ошибка в теле цикла, синтаксис - C++
Собственно, на скриншоте видно жалобы компилятора.

Нахождение _export в теле extern - C++
Ключевое слово _export нужен для того, чтоб экспортировать функции которые мы описываем в файле cpp, тип проекта которого длл,...

Использование нескольких операторов в теле if - C++
Нужно определение и пример фрагмента (структура нескольких операторов в теле if) помогите

Не видит переменную в теле дружественной функции - C++
В учебнике есть задача: Представьте себе ситуацию, в которой показанные ниже два класса рг1 и рг2 используют общий принтер, а для...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
22.01.2014, 17:20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru