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

Не работает, если массив динамический ?! Почему? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести на консоль все числа Мерсена в заданном интервале http://www.cyberforum.ru/cpp-beginners/thread1544475.html
1. Вывести на консоль все числа Мерсена в заданном интервале. Числом Мерсена называется простое число n, которое представимо в виде n=2p-1, где р – также натуральное число. Например, , . При...
C++ Как правильно распределить динамическую память? При запуске программы и вводе строки, в одном случае программа выполняется, а в другом выдает, что прекращена работа программы. Понимаю, что ошибка в распределении памяти, но не пойму точно как... http://www.cyberforum.ru/cpp-beginners/thread1544470.html
C++ Вычислить погрешность функции при заданных значениях аргументов дифференциальным способом
Вычислить погрешность функции при заданных значениях аргументов дифференциальным способом Функция: Z=(a-b)^2/2+b a=1.543 b=0.78
C++ Нужно по коду написать описание как на примере
Вот пример описания: Вначале программы зададим две переменные (LENG и LENN) с размерами 6 и 15, для дальнейшего удобного использования в программе. Для упрощения заполнения количества пропущенных...
C++ Перегрузка оператора сравнения http://www.cyberforum.ru/cpp-beginners/thread1544460.html
Посмотрите, пжл, правилен ли синтаксис перегрузки оператора сравнения для двух строк: #include <cstdio> class base { public: char bfio,borg; base(char fio,char org) { ...
C++ Выполнить перемножение чисел в массиве Как выполнить перемножение чисел в массиве (например a1*a2*a3). подробнее

Показать сообщение отдельно
Holyguner
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 45

Не работает, если массив динамический ?! Почему? - C++

04.10.2015, 20:31. Просмотров 155. Ответов 4
Метки (Все метки)

Простая задача, есть текст , удалить из него набор символов, вот код - все работает ->
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
25
26
27
28
29
30
    char c[] =  "ky12345ky1234ky123ky12ky1",    //  некоторый текст
                cNew [50]="";                   //  
    char x[] =  "ky";                           //  некоторый набор символов
    int  D   =  strlen(x),
         len =  strlen(c);
    char    *pc(c), 
            *ppc(c);
    int     k_last(0),
            k_new;
    while (pc!='\0')
    {
        k_new=0;
        if (!(pc=strstr(pc, "ky")))
        {
            // заполнение остатка после последнего вхождения "ky"
            pc = &c[0];
            strncat(cNew, pc+k_last+D, len-k_last-D);
            break;
        }
        else
        {
            k_new = pc-ppc;
            strncat(cNew, 
                    k_last||k_new ? pc-(k_new-k_last)+D : pc-k_new,
                    k_last||k_new ? k_new-k_last-D : k_new);
            pc+=D;
            k_last=k_new;
        }
    }
    puts(cNew);
И не могу понять что происходит если массивы динамические ? Ошибки ... бред((
<<ConsoleApplication1.exe вызвал срабатывание точки останова>>РРРРРрррррррррррр!ААаа!
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
25
26
27
28
29
30
31
32
    char c[] =  "ky12345ky1234ky123ky12ky1";    //  некоторый текст
    char* cNew = new char [50];                 //  
    char x[] =  "ky";                           //  некоторый набор символов
    int  D   =  strlen(x),
         len =  strlen(c);
    char    *pc(c), 
            *ppc(c);
    int     k_last(0),
            k_new;
    while (pc!='\0')
    {
        k_new=0;
        if (!(pc=strstr(pc, "ky")))
        {
            // заполнение остатка после послетнего вхождения "ky"
            pc = &c[0];
            strncat(cNew, pc+k_last+D, len-k_last-D);
            break;
        }
        else
        {
            k_new = pc-ppc;
            strncat(cNew, 
                    k_last||k_new ? pc-(k_new-k_last)+D : pc-k_new,
                    k_last||k_new ? k_new-k_last-D : k_new);
            pc+=D;
            k_last=k_new;
        }
    }
    puts(cNew);
    delete []cNew;
    cNew = nullptr;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru