1

Тема: Посилання

Створив програму яка видаляє з номера X по Y символів з введеної строки та записує і виводить це в нову строку. 

#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;

void main()
{
    int k = 0, i = 0, size, a = 0, b = 0;
    char x1[50], x2[50], *sil1, *sil2;
    puts("Vvedit stroku(49 max)");

    gets_s(x1);
    sil1 = x1;
    sil2 = x2;
    size = strlen(x1) + 1;
    // ==============================================================================================
    while (a == 0)
    {
        puts("z iakogo po nomeru simvola udaliti ?");
        cin >> a;
        if (a > (size - 1))
        {
            cout << ("Error!!! TRY AGAIN! maximum - ") << (size - 1) << endl;
            a = 0;
        }

    }

    while (b == 0)
    {
        puts("kinec delete?");
        cin >> b;
        if (b > size)
        {
            cout << ("Error!!! maximum - ") << size << endl;
            b = 0;
        }
    }

    // ==============================================================================================
    i = 0;
    while (k < size)
    {
        if (k<a || k>b)
        {
            *(sil2 + i - 1) = *(sil1 + k - 1);
            i++;
        }

        k++;
    }

    cout << "\n\n New riadok: ";
    puts(sil2);
    system("pause");
}

Але виводить нову строку криво, не можу ніяк розібратися чому:
http://s020.сайт-злодій/i715/1502/a3/bed283e054aa.png

початкову строку виводить нормально:
http://s008.сайт-злодій/i305/1502/3d/96aa897141ec.jpg

2

Re: Посилання

'\0' наприкінці рядка теж треба копіювати (чи просто записувати цей символ в кінець sil2).
І  *(sil2 + i - 1) при i=0 лізе за межі рядка.

Подякували: Dopamine1