Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Работа со строками |
Автор: vik5252 12.5.2008, 23:16 | ||
Нужно сделать функцию типа strcat(), но чтоб она прибавляла не всю строку, а указанное количество символов. Вот код :
Компилируется без ошибок и замечаний, и даже выдает верный результат, но в процессе выполнения Windows XP "выкидывает" на экран окошко с информацией об ошибке "Stack around the variable 'str1' was corrupted", и временно приостанавливает выполнение программы. Кто знает, в чем тут дело? |
Автор: bronislav 12.5.2008, 23:29 | ||
Ну для начала, вынеси строки из стека - используй динамическое распределение памяти
А как ты складываешь строки? У тебя для строки s1 выделено сначала 14 байт, а потом ты к ним добавляешь информацию из s2, хотя перераспределение памяти не делаешь. Вот система и ругаеться, что ты обращаешься к памяти, которая тебе не принадлежит. Да и само сложение строк у тебя как-то криво реализовано |
Автор: vik5252 12.5.2008, 23:40 | ||||
Вот так всегда, ищешь, ищешь - бесполезно. Как написал на форум, через несколько минут нашел. Здесь в строку str1 функция summa_strok добавляет символы. А объявлена эта строка, как массив из 14-ти символов, и когда добавляются еще символы - то неизвестно, какая (возможно важная) информация при этом стирается. Нужно определить эту строку не так :
а, например, так :
Сам с собой пообщался - и уже веселей ![]() Добавлено через 2 минуты и 15 секунд А чего криво-то ? Ну покажи тогда, как надо, чтоб не криво было ? Добавлено через 3 минуты и 33 секунды А до динамического распределения памяти я еще не дочитал ![]() |