![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 | |
Регистрация: 04.10.2011
Сообщений: 7
|
![]()
Здравствуйте, необходима помощь.
Получил задание на лабораторную работу по C (именно C, не C++) "На входе строка. Необходимо разделить её на 2 равные части, и поменять их местами. Например "abcdefghijklmnopq" ->"jklmnopqabcdefghi"" С самим разделением и перестановкой проблем не возникло. Закавыка в том, что нужно использовать динамическое расширение памяти. Просто, само по себе, выделение памяти (calloc) работает нормально. То есть, если я беру char* str1; str1=(char*)calloc(1000, sizeof(char)); то программа отлично работает. Но мне нужно, чтобы изначально выделенная память была небольшая, а при вводе новых символов ее размер увеличивался (нужно использовать ф-цию realloc). А вот с realloc начинаются проблемы. Начальный размер строки я взял 10 симв. типа char. При вводе в программу 9 символов (и десятый, символ конца строки) алгоритм работает, но если введено больше, то, по-видимому, realloc не расширяет объем памяти. Также выдается ошибка: Цитата:
Подскажите, в чем моя ошибка. Два дня проискал в интернете, но ничего толком не нашел. Вот код: Код:
|
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
![]()
Семоха Валерий
Подскажите, в чем моя ошибка. Два дня проискал в интернете, но ничего толком не нашел. искать ошибки надо не в интернете, а в программе. тебе поможет методика поиска и устранения ошибок под названием "отладка", а также некоторые полезные клавиши: F9 - поставить точку останова F5 - выполнять программу до ближайшей точки останова F10 - пошаговое выполнение программы
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 04.10.2011
Сообщений: 7
|
![]() Код:
Переписал его, но ошибка осталась. Дебагом и точками останова пользуюсь, но я почему в инет полез искать, - потому, что не смог понять причину, из-за которой происходит ошибка. Спотыкается на realloc. А почему - понять не могу. У меня проблема в чем, мне нужно сдать много лабораторных на новом языке (до этого изучал Pascal), а времени сесть с книжкой и толком разобраться почти нету, к сожалению. Я не из ленивых, и если бы не такая срочность, с которой нужно делать лабораторные, я бы помощи не просил, сидел бы сам разбирался, меня так родители научили. Но когда сильно прижимает, можно и спросить. Извиняюсь, что отдалился от темы. Не нашел я и как правильно написать realloc: в каждой книжке, на каждом форуме по-своему написано. Некоторые ошибки в коде на Си я пока найти не в состоянии. |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 08.05.2011
Сообщений: 42
|
![]()
держи нямку) (всё проверено, робит)
Код:
Последний раз редактировалось rustx88; 05.10.2011 в 11:34. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 04.10.2011
Сообщений: 7
|
![]()
Спасибо большое, буду разбираться.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Генерация чисел нормальным распределением | Athen | Помощь студентам | 5 | 03.04.2015 13:46 |
генерация случайных чисел с заданным распределением | Aladin | Общие вопросы C/C++ | 6 | 19.05.2011 22:53 |
Проблемы с выделением динамической памяти malloc (recalloc) | slips | Общие вопросы C/C++ | 6 | 29.04.2009 19:27 |