![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
JTut |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
Такая запись, как я понял, вызывает глюки
s[i]='\0'; Как тогда его добавить? |
|||
|
||||
DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
Такая запись вызывает глюки когда ты пытаешься записать элемент по недоступному индексу.
Какой у тебя глюк был? можно еще
Но это считай тоже самое -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
JTut |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
Определили строку s2
Нужно скопировать все символы из строки s2 в строку s3 (Это упрощенный вариант моей задачи) char* s3; for (int i=0; i<=strlen(s2); i++) { if (s2[i]=='\0') { s3 = new char[i+1]; for(int k=0; k<i;k++) { s3[k]=s2[k]; } s3[k+1] = '\0'; printf(s3); } } Если я ввожу слово Привет, то он пишет Привет= Если я выделяю память под массив стандартным образом, то есть char s3[20], то он дописывает к концу строки вообще непонятный символ Кстати, ваш вариант не помог Это сообщение отредактировал(а) JTut - 13.10.2008, 12:55 |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
JTut, а strcpy() использовать запрещают религиозные убеждения?
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
намутили Вы с решением
Это сообщение отредактировал(а) mes - 13.10.2008, 13:06 |
|||
|
||||
JTut |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
В том то и дело, что мне по заданию нужно сделать без этих копи.
я пытаюсь вручную сделать. Но я понял for(int k=0; k<i;k++) { s3[k]=s2[k]; } s3[k+1] = '\0'; Тут нужно было дописать s3[k]='\0' , так как k на выходе из цикла будет на 1 больше, то есть равно i. Это я по коду copy понял. Все, всем спасибо. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
обратите также внимание и на цикличное выделение памяти ![]() |
|||
|
||||
JTut |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
Да, кстати, спасибо, что напомнили.
Если вот так в цикле постоянно выделять память, то она будет увеличиваться ли просто перезаписываться? Просто мне не удалось ее очистить с помощью функции delete [] |
|||
|
||||
DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
Таким образом ты будешь постоянно резервировать новые области из кучи.
Почему не удалось использовать delete []? Код покажи. Это сообщение отредактировал(а) DjoNIK - 13.10.2008, 13:53 -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
JTut |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
Все удалось, надо было так написать
delete [] S; |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
надеюсь операцию выделения памяти Вы все таки вынесли из цикла ) |
|||
|
||||
inside_pointer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
ты написал
так не делается, т.к. не всегда можно проконтролировать отсутствие символа % в строке s3 он управляющий для функции, и она будет искать аргументы после s3, а там память Это сообщение отредактировал(а) inside_pointer - 14.10.2008, 10:34 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |