2 / 2 / 3
Регистрация: 30.03.2014
Сообщений: 34
|
||||||
1 | ||||||
Бесконечный цикл30.03.2014, 23:29. Показов 1531. Ответов 21
Метки нет (Все метки)
Почему компилятор выдает всякую ерунду при попытке воспроизвести этот код? Что его зацикливает?
0
|
30.03.2014, 23:29 | |
Ответы с готовыми решениями:
21
Почему цикл на при 1 уходит в бесконечный цикл? Бесконечный цикл while Бесконечный цикл Бесконечный цикл |
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
||||||
30.03.2014, 23:34 | 3 | |||||
Teddy17, strlen вынеси вот так:
0
|
2 / 2 / 3
Регистрация: 30.03.2014
Сообщений: 34
|
|
30.03.2014, 23:34 [ТС] | 4 |
В консольном окне появляется множество символов, которые не используются мной
0
|
2 / 2 / 3
Регистрация: 30.03.2014
Сообщений: 34
|
|
30.03.2014, 23:36 [ТС] | 6 |
DrOffset, ValeryS спасибо
0
|
2 / 2 / 3
Регистрация: 30.03.2014
Сообщений: 34
|
|
30.03.2014, 23:38 [ТС] | 8 |
Понял, что со строкой напортачил. Спасибо
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
30.03.2014, 23:41 | 9 |
Я просто скопировал его вариант Вынесение за скобки - strlen это первый шаг.
Добавлено через 1 минуту ValeryS, Видишь, я тебе плюсик поставил? Значит согласен с твоим замечанием. Одно другому не мешает
0
|
2 / 2 / 3
Регистрация: 30.03.2014
Сообщений: 34
|
|
30.03.2014, 23:43 [ТС] | 11 |
ValeryS, насчет str1[size]=buf;что в нем не так?
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
30.03.2014, 23:43 | 12 |
Как раз таки ушел от него. А вот strlen потенциально могла вызывать бесконечный цикл, так как на каждый итерации отодвигала бы конец строки все дальше и дальше.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
30.03.2014, 23:47 | 13 |
но писать нужно правильно эта была ключевая ошибка, а вычисления размера строки, на логику не влияла влияла на производительность Добавлено через 2 минуты ушел я разве против, это и есть "замаскирование" вот вот в результате программа бы рухнула из-за недостатка стека и тогда пришлось бы разбираться
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
30.03.2014, 23:48 | 14 |
Ну елки-палки. Вопрос звучал как, "почему возникает бесконечный цикл". Я ответил именно на него. Вынесение strlen за скобки бесконечный цикл убирает. В этом есть сомнения? Исправление алгоритма до правильного - это следующий этап, ты его начал и я тебе плюс поставил. В чем проблема?
Добавлено через 1 минуту Блин. Разберись что ли уже. Первоначальный вариант ТС приводит к бесконечному циклу, а мой исправленный нет. В моем осталась только ошибка затирания нуля. О который ты сказал. Смотри еще раз внимательно или запусти.
0
|
2 / 2 / 3
Регистрация: 30.03.2014
Сообщений: 34
|
|
30.03.2014, 23:49 [ТС] | 15 |
А можно этот же результат сделать без использования циклов for?
Добавлено через 55 секунд И что не правильно в str1[size]=buf;
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
30.03.2014, 23:50 | 16 |
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
30.03.2014, 23:51 | 17 |
size это размер строки
например строка "аа" имеет размер 2 но в памяти занимает 3 байта вот так будет лежать а а 0 ты пишешь в str1[2]=buf; т.е в третью ячейку там где лежит завершающий 0 строка портится, будет выводить на экран все подряд пока не встретится еще один 0 правильно так str1[size-1]=buf; тогда buf встанет на место последнего символа
1
|
2 / 2 / 3
Регистрация: 30.03.2014
Сообщений: 34
|
|
30.03.2014, 23:52 [ТС] | 18 |
Так ведь функция strlen() возвращает длину символьной строки без учета ноль-символа
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
30.03.2014, 23:53 | 19 |
2
|
2 / 2 / 3
Регистрация: 30.03.2014
Сообщений: 34
|
|
30.03.2014, 23:54 [ТС] | 20 |
А, все, догнал. Спасибо за помощь)
0
|
30.03.2014, 23:54 | |
30.03.2014, 23:54 | |
Помогаю со студенческими работами здесь
20
Бесконечный цикл Бесконечный цикл Бесконечный цикл Бесконечный цикл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |