Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Simply me
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521

Скажите, пожалуйста, почему в переменной fn остаётся значение 1, а не символ, введенный с клавиатуры?

19.03.2019, 09:47. Показов 1668. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Вспоминаю программирование. Скажите, пожалуйста, почему в переменной fn остаётся значение 1, а не символ, введенный с клавиатуры?
C++
1
2
3
4
char fn='1';
printf("Input filename\n");
scant_s("%c", fn);
printf("%c", fn);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.03.2019, 09:47
Ответы с готовыми решениями:

Ввести с клавиатуры символ. Определить, является ли введённый символ буквой
Ввести с клавиатуры символ. Определить, является ли введённый символ буквой.Заранее благодарчик!

Ввести с клавиатуры символ (в переменную char) и определить, соответствует ли введенный символ 'Q' или 'q'
1)Ввести с клавиатуры символ (в переменную char) и определить, соответствует ли введенный символ 'Q' или 'q' (использовать логический...

Используя кольцевой односвязный список найти введённый с клавиатуры символ, удалить символ стоящий перед найденным за 1
Используя кольцевой односвязный список найти введённый с клавиатуры символ, удалить символ стоящий перед найденным за 1 позицию и вставить...

23
 Аватар для dreamer_108
75 / 55 / 21
Регистрация: 10.07.2018
Сообщений: 214
19.03.2019, 16:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Azazel-San Посмотреть сообщение
И это безопаснее за что? В сравнении с чем?
в сравнении с обычным scanf
*смайлик не цитируется*
А что смешного? В том, что процесс считает входным потоком, не может быть очень большого количества символов?
Цитата Сообщение от Azazel-San Посмотреть сообщение
А что будет если написать std::cin >> buf;, а потом на вход дать "12345678901234567890"?
А для чего так писать? std::cin - это возможности c++, почему бы тогда не использовать строки?
А для буфера я бы порекомендовал использовать:
C++
1
std::cin.get(buf, bufSize);
Цитата Сообщение от Azazel-San Посмотреть сообщение
Предупреждение чего
Да, с предупреждением не прав, но ведь он прочитает
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
19.03.2019, 16:14
Цитата Сообщение от Байт Посмотреть сообщение
что это не бред.
Не похоже на бред
The pointer is such that the range [c_str(); c_str() + size()] is valid and the values in it correspond to the values stored in the string with an additional null character after the last position.
Цитата Сообщение от Байт Посмотреть сообщение
Для проверки попробуйте
Я же написал
Цитата Сообщение от Azazel-San Посмотреть сообщение
Запись по такому указателю полученному через c_str() - UB.
Добавлено через 5 минут
Цитата Сообщение от dreamer_108 Посмотреть сообщение
в сравнении с обычным scanf
Дык чем безопаснее?
Цитата Сообщение от dreamer_108 Посмотреть сообщение
std::cin - это возможности c++, почему бы тогда не использовать строки?
Цитата Сообщение от dreamer_108 Посмотреть сообщение
а то вдруг вообще ты не из стандартного потока читаешь...
"А вдруг"?)
Имею полное право использовать Си-строки.
Цитата Сообщение от dreamer_108 Посмотреть сообщение
А для буфера я бы порекомендовал использовать:
А я бы порекомендовал использовать для scanf "модификатор ширины".
%[*][width][modifiers]type
C++
1
2
char str[80];
std::scanf("%79s", str);
0
 Аватар для dreamer_108
75 / 55 / 21
Регистрация: 10.07.2018
Сообщений: 214
19.03.2019, 16:26
Цитата Сообщение от Azazel-San Посмотреть сообщение
Дык чем безопаснее?
Именно возможностью считать не более, чем нужно, но при этом считать (что не позволит сделать упомянутый модификатор ширины)
Цитата Сообщение от Azazel-San Посмотреть сообщение
"А вдруг"?
Конечно, вдруг - известно только то, что чтение производится из стандартного потока, а чем он там является...
Цитата Сообщение от Azazel-San Посмотреть сообщение
Имею полное право использовать Си-строки
Имеете, в C/C++ вы вообще имеете право на все Но не факт, что все надо делать - Вы также имеете право из всех деструкторов исключения кидать
Цитата Сообщение от Azazel-San Посмотреть сообщение
А я бы порекомендовал использовать для scanf "модификатор ширины"
Я тоже его рекомендовал в сообщении 15, и что?)
Цитата Сообщение от dreamer_108 Посмотреть сообщение
char buf[100];
scanf_s("%99s", buf, 100);
printf("%s\n", buf);
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
19.03.2019, 17:03
Цитата Сообщение от dreamer_108 Посмотреть сообщение
Именно возможностью считать не более, чем нужно
И ради этого ломать переносимость?
У меня шланг не находит таких функций как scanf_s/printf_s - а значит это замашки студии.
В остальном писать, например, такое:
C++
1
scanf_s("%99s", buf, 100);
уже имеет меньше смысла т.к. "%99s" не даст записать больше чем 99 символов в строку, итог указание размера буфера здесь не очень важно.
Цитата Сообщение от dreamer_108 Посмотреть сообщение
Вы также имеете право из всех деструкторов исключения кидать
Имею и если надо брошу.
Вы же предполагаете что кто-то взломает мою программу и подсунет мне что-то другое, я тоже делаю некие предположения.
И что std::cin >> str;, и что scanf("%s", str); в этом плане идентичны.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2019, 17:03

Определить, входит ли символ, введенный с клавиатуры, в множество
Создать два множества А и В, каждое из которых содержит только символы. Определить, входит или нет символ, введенный с клавиатуры во...

Найти и удалить символ из файла, введенный с клавиатуры
Необходимо найти и удалить символ из файла, введенный с клавиатуры. Помогите пожалуйста) DATA SEGMENT path db...

Заменить нечётные буквы на символ, введенный с клавиатуры
Задание следущее: заменить непарные буквы на символ, введенный с клавиатуры. Вот мой код: data segment s1 ...

Как прочитать из порта клавиатуры введённый символ
Подскажите, пожалуйста, какой номер у порта клавиатуры и как определить, какой символ введён.

Удалить из заданной строки любой введенный с клавиатуры символ
написать программу, которая удаляет из введенной строки любой введенный с клавиатуры символ


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru