Не понимаю, как работает функция memmov

В универе задача: ввести с клавиатуры строку символов и удалить из строки все слова начинающиеся на гласную букву.

Нашёл код решения задачи в интернете:

#include<iostream>
#include<string>

using namespace std;

void DeleteVowels(char words[]);

int main()
{
    char words[255];

    gets(words);

    DeleteVowels(words);

    cout << "Line view after deleting words:\n";
    puts(words);

    return 0;
}

void DeleteVowels(char words[])
{
    char vowels[13] = "AaEeIiOoUuYy";
    int counter = 0, i = 0, j = 0;
    int startwords, endwords;
    int len = strlen(words);

    for (i = 0; words[i];)
    {
        while (words[i] == ' ') i++;
        startwords = i;
        while (words[i] != ' ' && words[i] != '\0') i++;
        while (words[i] == ' ') i++;
        endwords = i;
        for (j = 0; vowels[j]; j++)
        {
            if (words[startwords] == vowels[j])
            {
                memmove(&words[startwords], &words[endwords], len - endwords + 1);
                i -= endwords - startwords;
                len -= endwords - startwords;
                break;
            }
        }
    }
}

Вообще не понимаю как работает вот этот кусок кода:

                memmove(&words[startwords], &words[endwords], len - endwords + 1);
                i -= endwords - startwords;
                len -= endwords - startwords;
                break;
            }

Дайте, пожалуйста, развёрнутый комментарий.


Ответы (0 шт):