|
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37
|
||||||
Программа аварийно завершается после оператора scanf27.06.2017, 11:24. Показов 2527. Ответов 18
Метки нет (Все метки)
Такая проблема.
Я начинающий. Занимаюсь уже вторую неделю. Написал такой код, запускаю программа. Все хорошо, но стоит дойти программе до операции ввода scanf , она тут же аварийно завершается, т.е. выводится окно завершения программы и поиска решения проблемы.
До этого стоял оператор CIN >>. Но он не принимал строку, а только присваивал approve одну букву "s". Причем неважно, ввел ты no или yes. При этом почему то выполнялись обе функции и yes: и no:.
0
|
||||||
| 27.06.2017, 11:24 | |
|
Ответы с готовыми решениями:
18
программа завершается аварийно Рекурсия, почему программа завершается аварийно? |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 27.06.2017, 11:30 | |
|
%s подразумевает строку, а не один символ.
0
|
|
|
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37
|
|
| 27.06.2017, 11:34 [ТС] | |
|
я вводу либо "yes" либо "no". Могу ввести просто "y" или "n". Чтобы я не ввел, программа завершается.
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 27.06.2017, 11:38 | |
|
Ну если просто буква, то тогда и спецификатор используй для буквы - %c, а для получения результата должен быть передан указатель на приёмник, а не значение как у тебя.
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||
| 27.06.2017, 12:13 | |||
|
Для строк используйте std::string.
1
|
|||
|
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37
|
|||||||||||
| 27.06.2017, 12:32 [ТС] | |||||||||||
|
Проблема решилась. Я измениk на cout. Теперь работает. Но работает если ввести один символ, или Y или N. Как сделать так, чтобы approve принимал целое слово и условие IF (approve=='yes') выполнялось?
Кстати. Я так и не понял почему оператор
П.С. Да этого я работал в basic. И там такой жесткости не было. Там вообще было пофиг, что будет содержать строковая переменная и какой она будет длины. Поэтому здесь у меня небольшой слом мозга.
0
|
|||||||||||
|
Любитель чаепитий
|
||
| 27.06.2017, 12:34 | ||
s означает, что там будет строка, а строка это всё, что 1 или более символов.и ещё передавать в scanf надо по указателю, иначе переменная не изменится.
0
|
||
|
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37
|
|
| 27.06.2017, 12:36 [ТС] | |
|
что такое указатель? И как он влияет на переменную?
0
|
|
|
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
|
||||||
| 27.06.2017, 12:39 | ||||||
0
|
||||||
|
Любитель чаепитий
|
|||
| 27.06.2017, 12:41 | |||
nullptr, либо мусор.scanf узнает, какую переменную надо менять?если передаешь по указателю, то она использует хранящийся в указателе адрес для того, чтобы записать по этому адресу введенное тобою значение. в scanf можно передавать переменные с помощью оператора взятия адреса, в твоем случае: scanf("%c", &approve);.
0
|
|||
|
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37
|
|
| 27.06.2017, 12:49 [ТС] | |
|
Я так полагаю это вопрос организации памяти.
Но как выглядит этот указатель? Я правильно понимаю, что в таком случае он должен быть отдельным для каждой переменной? И почему имя переменной не может само по себе быть указателем? Оно же уникально, как ДНК человека.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 27.06.2017, 12:56 | ||
|
2) scanf читает строки в си-стиле. При этом в конец строки всегда добавляется дополнительный "нулевой" символ, который этот самый конец строки и отмечает. Один символ для хранения "y", да еще один символ на признак конца строки - в один char никак не влезет.
0
|
||
|
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37
|
|
| 27.06.2017, 12:56 [ТС] | |
|
Это выдержка из учебника по Бэйсику. Вы про этого говорили?
Последним необязательным символом имени переменной может быть один из знаков объявления типа переменной (%, !, #, $): знак % определяет перемешгую целого типа знак ! — переменная с обычной точностью знак # — переменная с двойной точностью знак $ — строковая переменная. Имена, отличающиеся друг от друга лишь последним знаком, воспринимаются как различные переменные. Например, N%, N!, N#, N$ — имена различных переменных.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
| 27.06.2017, 12:58 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 37
|
|
| 27.06.2017, 13:05 [ТС] | |
|
Объясните мне, в каких случаях значение переменной должно равнять одному символу? Ведь бывают же случаи, когда мы не знаем, какое значение примет переменная. Это может быть один символ/цифра, много символов. Не проще ли сразу указывать все строковые переменные типа string? Зачем нужен char?
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 27.06.2017, 13:15 | |||
|
0
|
|||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 27.06.2017, 13:21 | |
|
0
|
|
| 27.06.2017, 13:21 | |
|
Помогаю со студенческими работами здесь
19
Проблемы с delete [], программа периодически аварийно завершается на строке с освобождением памяти. Программа аварийно завершается с ошибкой "map/set iterators are incompatible"
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|