|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
||||||
Не работает scanf в цикле23.12.2011, 03:20. Показов 11019. Ответов 21
Метки нет (Все метки)
в коде
Но получается фигня: 2й, 3й и следующие разы scanf просто не работает. Т.е. значение ip остается=значению 1-го ввода. Естественно цикл крутится до бесконечности. Наученный горьким опытом вставил fflush(stdin); в надежде доп.очистки входного потока, но мертвому эти припарки не помогли. Вот уж не ожидал такую гадость в простой проге
0
|
||||||
| 23.12.2011, 03:20 | |
|
Ответы с готовыми решениями:
21
Scanf в цикле
|
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
||||||
| 23.12.2011, 03:29 | ||||||
|
попробуй убрать fflush и записать так
кста строку 8 вообще убери
0
|
||||||
|
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
|
|
| 23.12.2011, 03:32 | |
|
Как ни странно, но ваш код у меня спокойно запустился и работает. Отмеченной ошибки не обнаружено. Если надо могу переделать код в более приличный вид...
0
|
|
|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
|||||||||||
| 23.12.2011, 03:39 [ТС] | |||||||||||
Попробовал - все то же осталось. Если вот так
Добавлено через 2 минуты ответ darkknight работаю в консольном C++ Builder типа С++ на других форумах чего только не советовали - и scanf_c и _fflush(stdin) эти функции у меня не поддерживаются!!!
0
|
|||||||||||
|
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
|
||||||
| 23.12.2011, 03:47 | ||||||
0
|
||||||
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
||||
| 23.12.2011, 03:49 | ||||
|
Добавлено через 1 минуту посмотрел бы дебагером...
0
|
||||
|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
|
| 23.12.2011, 03:51 [ТС] | |
|
Не помогло. По поводу функций testDPF() и FileDPF() - в них создается с помощью new 2-мерный
динамический массив. Причем delete[] там не стоит - работало и так. Может в этом дело?
0
|
|
|
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
|
||
| 23.12.2011, 03:54 | ||
|
И вообще, выложи весь проект вместе с функциями(можно в архивчике).
0
|
||
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
||||||
| 23.12.2011, 03:57 | ||||||
|
eugrita, ставь breakpoint'ы и смотри в отладчике значение ip, сразу все прояснится
Добавлено через 1 минуту может так поможет, хотя вляд ли.
0
|
||||||
|
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
|
||||||
| 23.12.2011, 04:10 | ||||||
|
а можно вас попросить ради собственного любопытсва, скомпилировать и запустить следующее:
0
|
||||||
|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
||||||
| 23.12.2011, 04:19 [ТС] | ||||||
|
ну вот заглушил обе функции т.е. добавил 1-м оператором return
сразу все стало нормально. Выкладываю код. (правда delete[] сейчас дает сбой по памяти почему-то) (раньше без него обходился
0
|
||||||
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
|
| 23.12.2011, 04:32 | |
|
eugrita, попробуйте проделать сказанные мной манипуляции с функциями fscanf, scanf в функциях testDPF, fileDPF. return означает вернуть значение, т.е. ваши функции не выполняются, выход из них происходит сразу же после входа. Отсюда заключаем что гадится stdin именно в них. Оперторы new\delete это плюсовые операторы, а ваш код полностью написан на Си и в стиле Си. Читать его практически невозможно... а выравнивать долго, потому и не читал.
0
|
|
|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
||||||
| 23.12.2011, 04:39 [ТС] | ||||||
|
ответ alkogolik
Хоть и стиль C, scanf у меня единственный в главной проге. Ваш прием там не помог. у меня правда почему-то ошибка на динамическом уничтожении
0
|
||||||
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
|
| 23.12.2011, 04:47 | |
|
eugrita, я вам позже скажу почему ошибка. сейчас во время коррекции кода поправил
0
|
|
|
8 / 8 / 3
Регистрация: 22.12.2011
Сообщений: 14
|
|
| 23.12.2011, 04:57 | |
|
0
|
|
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
|||||||||||||
| 23.12.2011, 05:15 | |||||||||||||
|
читайте, пробуйте
код
результат
тест памяти
из теста видно что несмотря на работу программы где-то есть недочеты, бегло не заметил, вполне вероятно что стоит попробовать всю работу с память переписать в стиле Си. А по большому счету для этой программы использовать динамическую память не нужно. Подумайте сами, массив создается для выполнения расчета и тут же уничтожается, т.е. его не надо ни расширять и сужать... вполне себе можно сделать статический массив на стеке. В мейне или глобальный как бы по большому счету без разницы. зы, я не переписывал код, я просто его выравнивал и по пути исправлял все что заметил. Потом скомилял и устранил все варнинги, ну а искать ошибки рантайма это уже ваша работа Добавлено через 6 минут
0
|
|||||||||||||
|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
||||||
| 23.12.2011, 05:30 [ТС] | ||||||
|
удалил
В общем плюнул я на это дело. Убрал цикл do раз так Теперь выполняется 1 раз с выбором по меню и завершается
0
|
||||||
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
||
| 23.12.2011, 05:34 | ||
|
0
|
||
|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
||
| 23.12.2011, 05:38 [ТС] | ||
|
интересный прием - тест памяти -никогда не был с ним знаком.
Как вы это делаете? Добавлено через 3 минуты При такой жене как у меня особенно не распрограммируешься
0
|
||
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
|||||||
| 23.12.2011, 05:41 | |||||||
0
|
|||||||
| 23.12.2011, 05:41 | |
|
Помогаю со студенческими работами здесь
20
Функция scanf не работает
Scanf не работает дважды
Не работает scanf в одной из строк Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|