Форум программистов, компьютерный форум CyberForum.ru

Функция редактирования строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Опишите класс "Вектор" http://www.cyberforum.ru/cpp-beginners/thread644494.html
1. Опишите класс "Вектор". Данные класса: координаты начала и конца вектора. Методы класса: должны обеспечить минимальную функциональность объекта. 2.Перегрузите операцию сложения векторов с использованием операции - метода класса, а операцию вычитания с использованием дружественной ф-ии. 3.Перегрузите унарную операцию ++ для инкремента вектора как метод класса, а-- как дружественную...
C++ Конвертирование в wstring& Всем привет! Не могу понять почему невозможно конвертировать из wchar_t в wstring& Вызов метода client -> CompareTwoString( iteratorclient -> nameclient, positionclient ,lenghtname ); функция bool CompareTwoString( wstring &one, wstring &two, int position ) { //something http://www.cyberforum.ru/cpp-beginners/thread644486.html
C++ В строке с найти количество слов не содержащий подстроку
В строке с найти количество слов не содержащий подстроку с2 вывести эти слова где с2=аб
Матрицы: поменять местами первую строку и строку, содержащую максимальный элемент C++
1)В матрице поменять местами 1 строку и строку содержащие последнее вхождение элемента максимального где максимальный- максимальный элем всей матрицъ вывести итоговую матрицу. 2)В матрице обнулить Все строки содержащие элемент мин более одного раза мин минимальный элемент всей матрицы вывести итоговую матрицу
C++ Двузначное число разделить на две позиции в массиве http://www.cyberforum.ru/cpp-beginners/thread644396.html
у меня есть действительные числа в массиве от 1 до 15. Как сделать так что бы начиная с 10, десять стояла не на одной позиции, а разделилось на две, то есть что бы 10 делилась на 1 и на 0, что бы на 9 позиции стоит 1, а на 10 стоит 0.
C++ Структуры Описать тип TРolygon — запись с полями целого типа, для указания количества сторон и вещественного типа для обозначения длины сторон и описать функцию AreaN(TРolygon) вещественного типа, находящую площадь выпуклого N-угольника. С помощью этой функции найти площади трех многоугольников, если дано число и длины их сторон. Помогите пожалуйста подробнее

Показать сообщение отдельно
cmath
Модератор
2432 / 1651 / 133
Регистрация: 11.08.2012
Сообщений: 3,289
Завершенные тесты: 5

Функция редактирования строк - C++

30.08.2012, 16:43. Просмотров 785. Ответов 7
Метки (Все метки)

Доброго времени суток. Столкнулся со следующей проблемой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void Erase(char **str, int pos, int n)
{
    char *newstr1, *newstr2;
    newstr2 = *str;
    int i = 0, len;
    len = strlen(newstr2);
    if (len >= pos + n)
    {
        newstr1 = new char[len - n];
        while(i != pos)
        {
            newstr1[i] = newstr2[i];
            i++;
        }
        while(i != len - n)
        {
            newstr1[i] = newstr2[i+n];
            i++;
            if(i == len - n)newstr1[i] = '\0';
        }
        delete []newstr2;
        *str = newstr1;     
    }
}
Эта функция удаляет из строки символы с pos+1 до pos+n включительно.
При одноразовом применении этой функции к строке все проходит нормально и без ошибок, но при повторном (я её вызывал для удаления всех вхождений заданной подстроки) применении появляется ошибка времени исполнения:
HEAP CORRUPTION DETECTED after Normal block (#123) at
0x0020EFB0.
CRT detected that the application wrote to memory after end of heap buffer.
Я уже раз 50 по этой функции проехался, использую точки останова. Ошибка возникает в *str = newstr1; когда я записываю в строку результат работы этой процедуры. пробовал убрать строку с delete (хотя это приводит к утечке памяти) не помогает. Помогите разобраться пожалуйста. Заранее благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru