|
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 118
|
||||||
Цикл не дает записать данные в переменную25.05.2009, 02:33. Показов 2153. Ответов 17
Метки нет (Все метки)
Vvedite comandu mess:str: end Vvedite comandu //здесь уже можно вводить Короче получается первый раз цикл проходит и не дает записать в переменную mess.
0
|
||||||
| 25.05.2009, 02:33 | |
|
Ответы с готовыми решениями:
17
Процедуры: записать в переменную А минимальное из значений А и В, а в переменную В - максимальное |
|
43 / 39 / 12
Регистрация: 05.01.2009
Сообщений: 394
|
|
| 25.05.2009, 03:07 | |
|
а что было до цикла?
попробуй очищать поток ввода fflush (stdin);
1
|
|
|
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 118
|
||||||
| 25.05.2009, 08:50 [ТС] | ||||||
|
Попробововал очищать, но все равно не то.
До цикла с потоком ввода были операции:
Вот что показывает gdb перед циклом print stdin $1 = (struct _IO_FILE *) 0xb7ed3420 Добавлено через 1 минуту 28 секунд Содержимое mess перед циклом print mess $3 = "\025\000��\025\000��\025\000�'\000\000� T\000\000\006\000\000\000\000\020\000\00 0\002\000\000\000|�\025\000|�\025\000|�\ 025\000�\000\000\000�\000\000\000\006\00 0\000\000\004\000\000\000\004\000\000\00 0t\001\000\000t\001\000\000t\001\000\000 \000\000\000 \000\000\000\004\000\000\000\004\000\000 \000\a\000\000\000��\025\000��\025\000�� \025\000\b\000\000\000@\000\000\000\004\ 000\000\000\004\000\000\000P\vط\020ii\r� m,��\036dط\230���\004\000\000\000�\212� �p\215��\002\000��h\215��\006dط�\212���o ��\024\213��\001\000\000\000Tn0����\025 \000��"... Добавлено через 7 минут 10 секунд Переменная mess после очищения в начале цикла print mess $6 = '\0' <repeats 1023 times> Добавлено через 54 секунды Правда надо сказать, что второй проход по циклу выполняется нормально и он дает ввод команды Добавлено через 5 часов 13 минут 38 секунд UP
0
|
||||||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
| 25.05.2009, 09:17 | |
|
очищать поток ввода нельзя, это даёт undefined behavior (непредсказуемое поведение)
цикл может проскакивать из-за того что в потоке ввода что-то есть, лучше это просто прочитать, вставив перед циклом scanf("\t"); если там перевод строки, он уйдёт в этот scanf
1
|
|
|
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 118
|
|
| 25.05.2009, 10:13 [ТС] | |
|
Перед циклом gdb показывает такую картину:
(gdb) print stdin $1 = -1207946208 Добавлено через 6 минут 24 секунды Не помогло использование scanf... Все равно проскакивает первый цикл Добавлено через 25 минут 52 секунды Может кто-нибудь подскажет как должен выглядеть stdin если смотреть в gdb??
0
|
|
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
| 25.05.2009, 10:25 | ||||||
Добавлено через 1 минуту 25 секунд обратная к gets функция puts, то есть gets обрезает перевод, а puts приписывает перевод (даже если там уже есть) поэтому, когда gets читает, как бы и не поймёшь, а был там перевод или может не было (типа писать его или не писать)
1
|
||||||
|
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 118
|
||||||
| 25.05.2009, 12:13 [ТС] | ||||||
|
Да я юзал gets, там было что-то типо этого, но он добавляет \n в конце, а мне он там не нужен. И собственно тогда вопрос - как удалить последний символ \n из строки??
Добавлено через 30 секунд *fgets Добавлено через 10 минут 12 секунд Вообщем и с fgets не работает. Проскакивает. Причем перед циклом делаю:
Добавлено через 50 минут 12 секунд UP Добавлено через 45 минут 54 секунды Никто видимо не знает что делать...((
0
|
||||||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||
| 26.05.2009, 04:28 | |||||||||||
Сообщение было отмечено Памирыч как решение
Решение
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 118
|
||||||
| 26.05.2009, 08:18 [ТС] | ||||||
|
Ну у меня по ходу где-то до цикла с буфером не в порядке... И не могу отладчиком отследить состояние
Добавлено через 57 минут 3 секунды Собственно вот функция, которая вызывается ДО цикла:
Без нее цикл не проскакивает...
0
|
||||||
|
|
|||
| 26.05.2009, 10:34 | |||
|
Добавлено через 2 минуты 23 секунды Советую везде для ввода использовать fgets, при этом перед запуском fgets всегда делать fflush (stdin)
1
|
|||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||
| 26.05.2009, 10:45 | |||
(ещё scanf не ограничен по длине ввода, там можно ввести поле scanf("%100s", login) ну и формировать его перед сканфом всю форматную строку типа sprintf(fmtline, "%%100s") )
1
|
|||
|
|
||
| 26.05.2009, 11:07 | ||
|
Тогда нужно аккруатно написать отдельную процедуру для ввода строки. В первоначальном варианте она будет состоять из одного fgets и работать мы будем в предположении, что пользователь вводит строки, заканчивающиеся энтером и заведомо умещающиеся в буффер. А в будущем, если понадобится, надо будет отдельно разбираться с тем, как работать с длинным вводом, чтобы лишние данные не залипали в буффере
1
|
||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||
| 26.05.2009, 11:12 | |||||||
1
|
|||||||
|
|
||||||
| 26.05.2009, 11:19 | ||||||
|
С учётом того, что у toxxin'а linux и glibc, то корректнее было бы читать именно man от glibc.
1
|
||||||
|
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 118
|
||
| 26.05.2009, 13:06 [ТС] | ||
|
Спасибо большое
Добавлено через 3 минуты 39 секунд
0
|
||
|
|
|
| 26.05.2009, 14:06 | |
|
Язык Си - оннизкоуровневый. Библиотека тебе обеспечивает только набор строительных кирпичей, из которых там строишь то, что тебе нужно и так, как тебе нужно. Тебе выдали функцию fgets - пользуйся на здоровье. Только следи за заполняемостью буффера и если он заполнен под завязку, значит тебе нужно ещё раз дёрнуть функцию, чтобы прочитать буффер до конца
На Си++ это всё накрыто стандартными классами и тебе достаточно написать "cout << Str;". Правда ха этой строкой кроется работы, время исполнения которой в разы и десятки раз превышает время работы аналога на Си. Т.е. всё сразу не бывает - либо добно, либо быстро. Причём на Си ты этими кирпичами вертишь как хочешь с целью выжимания максимальной производительности из кода. На Си++ в большинстве случаев ты этого либо лишён, либоделается всё через три жо$ы Ну вот примерно так Если хочешь использовать какие-то обощённые функции ввода-вывода, чтобы самому их не писать - пожалуйста. Всё это реализовано в библиотеках типа termcap/ncurses. По умолчанию они у тебя стоЯт на машине, только надо разобраться как с ними работать
1
|
|
|
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 118
|
|
| 26.05.2009, 14:48 [ТС] | |
|
Спасибо. Это скорее был риторический крик)) Так-то я в принципе понимаю в каких ситуациях лучше использовать какой язык...
0
|
|
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||
| 27.05.2009, 04:33 | ||
1
|
||
| 27.05.2009, 04:33 | |
|
Помогаю со студенческими работами здесь
18
Организовать цикл по DataTable и записать ID в переменную как записать переменную и что бы цикл выполнялся (WinCC) записать данные в глобальную переменную Данные из ячейки записать в переменную Как записать в переменную данные из QDateTimeEdit? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|