Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
14 карат
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 66
1

Остановить ввод после нажатия клавиши enter

20.02.2018, 23:47. Просмотров 2111. Ответов 14
Метки с (Все метки)

C++
1
2
3
4
5
6
7
int i = 0;
    while (mass1[i] != '\0') {
        scanf_s("%a", &m);
        i++;
        mass1[i] = m;
        p++;
    }
Что я делаю не так?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2018, 23:47
Ответы с готовыми решениями:

Остановить ввод после нажатия клавиши enter
for(int i=0;pass;i++) cin>>pass;-перестает вводить символы после третьего. весь код: #include...

Обработка нажатия клавиши без подтвержения enter
Здравствуйте, уважаемые программисты. Подскажите в чем проблема. Вывожу рисунок посредством команды...

Убрать ожидание нажатия клавиши Enter при выводе
Здравствуйте! Подскажите пожалуйста, вот у меня сейчас вывод есть как бы, но он выводит через ентер...

Ввод в строку до нажатия Enter
Добрый вечер.Нужна функция,которая бы прибавляла к строке слова до тех пора,пока не будет нажат...

Ввод символов без нажатия Enter'а
Подскажите пожалуйста, как реализовать считывание символов (одного или нескольких) без нажатия...

14
COKPOWEHEU
1695 / 1159 / 266
Регистрация: 09.09.2017
Сообщений: 4,756
21.02.2018, 11:08 2
Цитата Сообщение от 14 карат Посмотреть сообщение
Что я делаю не так?
Не читаешь правила форума. Где условие задачи, что хочешь получить, что получил? Какого типа все переменные?
Цитата Сообщение от 14 карат Посмотреть сообщение
mass1[i] != '\0'
'\0' это число ноль, а в данной записи - нулевой символ, конец строки. Enter это символ '\n'
Цитата Сообщение от 14 карат Посмотреть сообщение
scanf_s("%a", &m);
старайтесь не использовать нестандартных функций без необходимости.
согласно ману, "%a" это аналог "%f" со времен С11. То есть вы вводите число с плавающей точкой и сравниваете его с символом. Не лучшая идея.
0
14 карат
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 66
21.02.2018, 12:26  [ТС] 3
Пользователь вводит последовательность вещественны чисел, нужно чтобы после нажатия Enter пользователем, программа прекратила ввод. Обязательно использовать функцию scanf_s.
C++
1
2
3
4
5
while ((scanf_s("%f", &m)))
    {
    i++;
    mass1[i] = m;
    }
В этом коде вводить получается, а выйти из цикла нет.
Где моя ошибка?
0
nmcf
6533 / 5757 / 2621
Регистрация: 14.04.2014
Сообщений: 24,494
21.02.2018, 13:40 4
Ctrl-Z + Enter.
0
21.02.2018, 13:40
14 карат
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 66
21.02.2018, 13:41  [ТС] 5
nmcf, куда именно это нужно вводить или вставить?
0
nmcf
6533 / 5757 / 2621
Регистрация: 14.04.2014
Сообщений: 24,494
21.02.2018, 13:42 6
При вводе так делаешь вместо очередного числа.
0
14 карат
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 66
21.02.2018, 13:50  [ТС] 7
nmcf, куда именно это нужно вводить или вставить?nmcf, А просто при нажатии Enter можно сделать?
0
TRam_
зомбяк
1276 / 963 / 283
Регистрация: 14.05.2017
Сообщений: 3,153
21.02.2018, 13:56 8
14 карат, просто при нажатии enter и только с использованием scanf_s - нельзя. С точки зрения этой функции пробел между числами и enter в конце строки абсолютно идентичны.

Добавлено через 47 секунд
Можно с помощью этой функции считать строку, а потом её расшифровывать, но это уже другое.

Добавлено через 1 минуту
Либо нужно предварительно вводить количество чисел, которые собираешься ввести.
0
nmcf
6533 / 5757 / 2621
Регистрация: 14.04.2014
Сообщений: 24,494
21.02.2018, 14:12 9
Цитата Сообщение от 14 карат Посмотреть сообщение
куда именно это нужно вводить или вставить?
Ну что не ясно-то?
4 5 6 ctrl-z Enter.
0
COKPOWEHEU
1695 / 1159 / 266
Регистрация: 09.09.2017
Сообщений: 4,756
21.02.2018, 15:48 10
C
1
2
3
4
5
  double var;
  char ch=0;
  while(ch != '\n'){
    scanf("%f%c", &var, &ch);
  }
и никаких ^Z / ^D не надо
0
nmcf
6533 / 5757 / 2621
Регистрация: 14.04.2014
Сообщений: 24,494
21.02.2018, 16:05 11
COKPOWEHEU, ты это проверял?
Ctrl-Z - стандартное решение.
0
COKPOWEHEU
1695 / 1159 / 266
Регистрация: 09.09.2017
Сообщений: 4,756
21.02.2018, 16:19 12
nmcf, да, проверял. А что, у вас не заработало?
ctrl+Z это нестандартное решение. Хотя бы потому что конец файла бывает ^D, а ^Z используется для постановки процесса на паузу
0
14 карат
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 66
21.02.2018, 16:32  [ТС] 13
COKPOWEHEU, Вы используете тип char, а мне нужно сразу заполнять массив вещественными числами

Добавлено через 46 секунд
COKPOWEHEU, Все, понял как, извините
0
nmcf
6533 / 5757 / 2621
Регистрация: 14.04.2014
Сообщений: 24,494
21.02.2018, 18:14 14
COKPOWEHEU, ты про Unix говоришь. Там Ctrl-Z и Ctrl-C связаны с сигналами.
Если ловить \n, то вводить надо в одну строку. Ctrl-D работает, Ctrl-Z тоже, если ввод не пустой.
0
COKPOWEHEU
1695 / 1159 / 266
Регистрация: 09.09.2017
Сообщений: 4,756
21.02.2018, 19:34 15
Цитата Сообщение от nmcf Посмотреть сообщение
COKPOWEHEU, ты про Unix говоришь. Там Ctrl-Z и Ctrl-C связаны с сигналами.
Так в windows тоже сигналы, хоть и на другие сочетания клавиш назначены.
Цитата Сообщение от nmcf Посмотреть сообщение
Если ловить \n, то вводить надо в одну строку.
Вроде бы именно это в условии и сказано - "прекратить ввод при нажатии enter"
0
21.02.2018, 19:34
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2018, 19:34

Ввод данных без нажатия «Enter»
Добрый день Интересует такой вопрос После ввода числа нужно нажимать клавишу ENTER Как можно...

Ввод данных без нажатия Enter
Здравствуйте. Допустим, у меня есть такое: char ololo; cin >> ololo; Тут мне надо ввести...

Ввод цифры без нажатия Enter'a, использование _getch()
доброго времени суток. проблема вот в чем: написал простенькую программу, она высчитывает...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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