187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|||||||||||
1 | |||||||||||
Считать char числом20.10.2012, 16:26. Показов 6505. Ответов 20
Метки нет (Все метки)
Хотелось бы считать char числом сразу. Конструкция типа
Есть какие-либо варианты? Ещё вопрос. Я предполагал, что, даже если идти считыванием вида scanf("%d", &someChar), то в буфере отснается \n после ввода, но его нет. Куда он делся? О_о Обычно же scanf не ест \n после чисел? Или это на него так параметр вида char, приведенный к int подействовал?
0
|
20.10.2012, 16:26 | |
Ответы с готовыми решениями:
20
Функция с переменным числом параметров char Семафоры - можно ли считать ноль положительным числом? Считать из файла и определить, является ли прочитанное числом Считать из файла в массив char |
~ Эврика! ~
1257 / 1006 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
20.10.2012, 16:42 | 2 |
"%hhu" или "%hhi" (для unsigned и signed char соответственно).
По второму затруднению: scanf кушает все пробелы, табы и переводы строки перед первым считываемым значением (если не это "%c"). Может, в этом дело.
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
20.10.2012, 17:08 [ТС] | 3 |
~OhMyGodSoLong~, спасибо. Но по какой-то причине это вызывает stack around тоже..
А вот насчет второго, я знал, что он так делает, но почему кушает каретку после чтения числа - вопрос.. :<
0
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
20.10.2012, 20:13 [ТС] | 5 |
Да, я знаю. Но при чтении "hhu" на unsigned char выдается то же самое. Тут где переполнение "хранилища"? Мне бы решение :<
Добавлено через 2 часа 56 минут Does anybody have an idea?
0
|
~ Эврика! ~
1257 / 1006 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
20.10.2012, 21:27 | 7 |
Ну я даже не знаю. Раз майкрософтовская scanf() не умеет модификатор hh (переполнение потому и происходит, что %hhu считается как просто %u, то есть unsigned int), то безопасный вариант только один — вон тот с интом (плюс проверка границ).
Применяйте своё право разработчика сказать "эта фича нереализуема в данных условиях" что ли.
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
||||||
21.10.2012, 09:07 [ТС] | 8 | |||||
alsav22, а если так :
Добавлено через 1 час 56 минут ~OhMyGodSoLong~, в таком подходе меня беспокоит исчезновение \n. Боюсь, как бы это потом проблем не вызвало
0
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
21.10.2012, 10:10 | 9 | |||||
Потому что scanf(), так же как и cin, игнорирует первые пробельные символы и '\n', но это не значит, что его в потоке нет. Код, который подтверждает, что '\n' в потоке остался, я показал.
Добавлено через 6 минут А если так:
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
21.10.2012, 10:15 [ТС] | 10 |
alsav22, _getch, getch, getchar, scanf("%c") не видят \n, хотя он остался. Cin.get() или cin.ignore() его видят
А по поводу первых \n и игнора scanf'а я писал выше, что вкурсе дела.
0
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
21.10.2012, 10:28 | 11 |
scanf(), так же как и cin, вообще, не читает (т.е. не помещает туда, куда идёт чтение) '\n'.
Добавлено через 1 минуту Хотите сказать, что код в 9 посте не выведет на экран 10? Там getchar() используется.
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
21.10.2012, 10:39 [ТС] | 12 |
alsav22, я говорю, что в моём случае "код в посте 9" не выводит ничего, пока я не введу ещё один символ, который и будет выведен.
0
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
21.10.2012, 10:52 | 13 |
Тогда не пойму о чём разговор. Зачем писать, что '\n' куда-то исчезает, что getchar() его не видит? Вы хотите его поймать, через scanf() ?
Добавлено через 2 минуты Что значит "ещё один"? Вводится только одно число. scanf() его читает, '\n' остаётся в потоке, getchar() извлекает его и помещает в someChar. На экран выводится 10.
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|||||||||||
21.10.2012, 10:56 [ТС] | 14 | ||||||||||
alsav22, бл..ин..
Пишу я значит
При попытке поймать её способами :
Однако, написав то же самое с cin, я вижу, что '\n' уходит в char-переменную. Вопрос почему и каким таким макаром игнорируются getch и прочие? Мне нужно его не поймать, а убить, ибо, если он все-таки остался, то при следующем чтении я могу его поймать случайно (ибо я уже не понимаю, какого лешего он ловится одними и не ловится другими).
0
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
21.10.2012, 11:12 | 15 |
Не знаю, как у вас, (какая среда?), но у меня ничего вводить не нужно. getchar() автоматом извлекает '\n' (так же, как и cin.get()) и код идёт дальше. Никакого ожидания, для второго ввода нет ( у меня, по крайней мере).
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
21.10.2012, 11:14 [ТС] | 16 |
VS 2008
0
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
21.10.2012, 11:19 | 17 | |||||
Покажите, каким способом определяете, что не ушла.
Добавлено через 3 минуты
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
21.10.2012, 11:32 [ТС] | 18 |
alsav22, да вы шутите, сударь, я уже 3 раза показывал и расписывал, как определяю, что что-то осталось!
0
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||
21.10.2012, 11:43 | 19 | ||||||||||
Точный код можете написать с коментариями?
Добавлено через 2 минуты Вот таким кодом проверяете?
И если добавить:
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
21.10.2012, 12:12 [ТС] | 20 |
alsav22, в функции используется считывание переменной (которое я привел уже в районе 5-7 раз). Ещё она используется только в fwrite(&someChar, sizeof(someChar), 1, miFile); и нигде более.
Я проверил наверное все комбинации. scanf/getchar - не ловит и просит ввести символ. cin.get / .ignore ловит и игнорит. gets() для char *someString = new char[1]; ловит тоже. Если поставить сначала getch (допустим), которые не словит, то после него хоть ты cin.get(), хоть .ignore ставь, '\n' нет и не было в помине и ничего его не поймает. В первом случае просит дважды ввести символ. Во втором случае просит дважды ввести символ.
0
|
21.10.2012, 12:12 | |
21.10.2012, 12:12 | |
Помогаю со студенческими работами здесь
20
Считать посимфольно из файла в char вектор Как считать строку из файла в char? Считать файл в переменную типа char, и работать посимвольно Считать с файла строку типа char до знака окончания строки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества
Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
|
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|
Это мы не проходили, это нам не задавали...(асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|