![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Atij |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 13.4.2008 Репутация: нет Всего: нет |
Добрый день. У меня возникла следующая проблема: я написал программу кот-ая удаляет все подстроки из строки, она работает нормально до того момента пока я не ввиду подстроку идентичную строке, в "output" выводится "Borland C++ - Copyright 1991 Borland Intl.", и после этого прога не работает даже для тех случаев для кот-ых работала раньше, помогите пожалуйста разобраться в чём проблема. Вот код:
|
|||
|
||||
baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
"Borland C++ - Copyright 1991 Borland Int" эта строка находится по адресу 0.
![]()
в случае, если подстрока не найдена, ptr станет равным 0. Ты это не проверяешь. Добавлено через 1 минуту и 15 секунд
Добавлено через 3 минуты и 26 секунд
|
||||||
|
|||||||
Atij |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 13.4.2008 Репутация: нет Всего: нет |
Большое спасибо, вот только ещё один вопрос, если допустим я ввиду в строку 1234567812345678.... и.т.д много-много раз, а в подстроку ввиду 1234567, почему в какойто момент выводится не только 8-ки но и вся остальная последовательность? И как это ибежать? Ещё раз спасибо за помощь и внимаие)
|
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
"много-много раз" не превышает установленную максимальную длину строки?
|
|||
|
||||
Atij |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 13.4.2008 Репутация: нет Всего: нет |
Привышает, в том тои дело, что вроде максимальная длина строки объявлена, а считывние продолжается =(
|
|||
|
||||
LexRema |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 15.3.2006 Репутация: нет Всего: нет |
Поставить на место максимального елемента заслуженный ноль str3[255] = '\0'; ПОСЛЕ окончания цикла
![]() |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
LexRema, ты понял неправильно. Происходит запись в чужую память, за пределами 255.
Atij, воспользуйся строками С++ std::string. Для них память распределяется динамически, есть операторы << и >>, а так же твоя функция станет проще, что-то вроде
Добавлено через 6 минут и 45 секунд вообще-то у тебя BC3.1, там нет STL. Но зато там есть своя библиотека, в т.ч. класс String. Можешь его использовать. Это сообщение отредактировал(а) baldina - 15.4.2008, 10:38 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |