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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

scanf и перевод каретки - C++

23.10.2012, 13:29. Просмотров 2389. Ответов 4
Метки нет (Все метки)

Конструкция вида
C++
1
scanf("%d\n", &uintgr);
позволительна и перевод каретки уйдет.
Однако
C++
1
scanf("%u\n", &uintgr);
не уберет каретку, а сделает ещё хуже. Нужно будет ввести два числа. Второе останется в буфере.

Откуда, как и почему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2012, 13:29     scanf и перевод каретки
Посмотрите здесь:

Перевод каретки и ввод данных в консоли - C++
Хотелось бы ввести данные в две строки за один раз... В простейшем случае пример выглядит так: #include <iostream> #include <cstdio>...

Перевод каретки и ввод данных в консоли - C++
Хотелось бы ввести данные в две строки за один раз... В простейшем случае пример выглядит так: #include <iostream> #include <cstdio>...

Насчёт каретки ) - C++
Всем привет )).Что бы я ни делал с кареткой,функции всегда возвращают нули =_=.Решил поэксперементировать с блокнотом: HWND f; ...

Fstream перемещение каретки - C++
Здравствуйте, не могу разобраться с классом fstream. Есть текстовый файл: 0 какие-то данные какие-то данные какие-то данные ...

Возврат каретки консоли! - C++
Доброе время суток! Вопрос который мне не дает покоя уже 2й месяц! И так у нас есть управляющие символы: - \n (новая строка) -...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
23.10.2012, 15:16     scanf и перевод каретки #2
Не знаю, как у вас, но у меня всё "работает неправильно" и с %d. Вводить можно не любое число, а вообще хоть что-нибудь, что не пробел.

scanf() делит всё содержимое строки формата на три класса: спецификаторы формата, пробельные символы и всё остальное. Спецификатор (типа %d) говорит считать из потока указываемые данные. Пробел (' ', '\t', '\r', '\n') означает любое количество любых пробелов. Возможно, нулевое, если это не мешает разобрать строку. Любой другой не пробельный символ означает единственное вхождение этого символа в считываемую строку. Если его там не оказывается, то считанное оставляется в потоке, а scanf() ругается кодом возврата.

Так что игнорить именно переводы строки не получится с помощью scanf(). scanf("%d\n%d", &x, &y); прекрасно переваривает ввод "42 <пробел> 42".
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
23.10.2012, 15:30  [ТС]     scanf и перевод каретки #3
~OhMyGodSoLong~, у меня, пока что, не вызывает ошибок такой хак :
C++
1
scanf("%u\0", &uint);
Но сам факт того, что с %d работает \n, а с %u \0 меня как-то настораживает :<

То есть вообще невозможно одним сканфом и одной переменной UINT забрать и число, и перевод строки?
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
23.10.2012, 16:56     scanf и перевод каретки #4
И двумя. И пятью. Для scanf() \n и пробелы — это тупо разделитель. Он его никак по-другому не умеет трактовать. Разве что когда scanf("%u%c"), но тогда ж что попало можно ввести и надо где-то пристроить этот char.

Разве тот хак не эквивалентен просто scanf("%u", &uint)?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2012, 11:55     scanf и перевод каретки
Еще ссылки по теме:

Что такое возврат каретки? - C++
\r - что делает этот управляющий символ, и чем он отличается от \n?

Вывод в консоль и возврат каретки - C++
Вывожу в цикле в консольное приложение по ходу обработки данных массива: cout &lt;&lt; &quot;Обработано строк:&quot; &lt;&lt; i &lt;&lt; &quot;\r&quot;; При таком выводе...

Перемещение каретки в указанные координаты - C++
Доброе время суток, Подскажите как сдвинуть каретку в консоле на заданные координаты

Перемещение каретки мыши по координатам в Linux - C++
Стоит Eclipse C/C++. Собираюсь сделать игру типа Adom, Dwarf Fortress, но мешает одно, не знаю как переместить каретку в определенные...

Как считать в цикле файл до символа перевода каретки? - C++
как считать файл до символа перевода каретки '\n', сделав всё это в цикле?

Scanf - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstdio&gt; #include &lt;cstdlib&gt; using namespace std; int maska(string a,string...


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

Или воспользуйтесь поиском по форуму:
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
24.10.2012, 11:55  [ТС]     scanf и перевод каретки #5
~OhMyGodSoLong~, неа. В отличие от обычного scanf("%u", &uint);, хак с \0 в конце действительно забирает перевод строки, как \n для %d. И вот я даже и не знаю, как это обосновать можно D:

Добавлено через 2 часа 57 минут
up-to-date

Добавлено через 15 часов 57 минут
up-to-date
Yandex
Объявления
24.10.2012, 11:55     scanf и перевод каретки
Ответ Создать тему
Опции темы

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