Тема: Поясніть будь ласка
Є программа -
1.
{
    system("chcp 1251");
    printf("Речення:  \n");
    char a[101] = "мдя ежс кек т з ок ес ";
    printf("Речення без першого словосполучення ЕЖС : \n");
    // gets(a);
    if(p1(a, "ежс"))
        printf("Входжень буквосполучень 'ЕЖС' не знайдено ");
    printf("%s\n ", a);
    printf("Речення із заміненим буквосполученням Т на ДЮЕ : \n");
    //gets(b);
    if(p2(a, "т", "дюе"))
        printf("Входжень буквосполучень Т не знайдено ");
    printf("%s\n", a);
    printf("Скопійовані 6 символи з рядка S після першої З в рядок X : \n");
    if(p3(a, "з", x))
        printf("Входжень букви ч не знайдено ");
    printf("%s\n ",x);
    if(p4(a, "ес", "їжє"))
        printf("В реченні немає буквосполучення 'ес'.");
    else
        printf("\nРечення з заміненими 'ес' на 'їжє': %s", a);
    return 0;
}
2.
int strdel(char *str, int z, int k) {
    if(z < 0) return -1;
    if(k < 0) return -2;
    int len = strlen(str);
    int m = z + k;
    if(z < len) {
        if(m >= len)
            str[z] = 0;
        else
            strcpy(str + z, str + m);
    }
    return 0;
}
int strins(char *s1, const char *s2, int n) {
    int len1 = strlen(s1);
    if(n > len1 || n < 0)
        return -1;
    int len2 = strlen(s2);
    int i;
    for(i = len1; i >= n; i--)
        s1[i + len2] = s1[i];
    strncpy(s1 + n, s2, len2);
3.
int strdel(char *str, int z, int k);
int strins(char *s1, const char *s2, int n);
int p3(char *c, const char *d, char *x);
int p4(char *S, const char *ed, const char *sh);
4.
int p1(char *a, const char *b) {
    char *p = strstr(a, b);
    if(p == 0)
        return 1;
    else {
        strdel(p, 0, 3);
        return 0;
    }
}
int p2(char *b, const char *n, const char *q) {
    char *m = strstr(b, n);
    if(m == 0)
        return 1;
    else {
        strdel(m, 0, strlen(n));
        strins(m, q, 0);
        return 0;
    }
}
int p3(char *c, const char *d, char *x) {
    char *ch = strstr(c, d);
    if(ch == 0)
        return 1;
    else {
        strncpy(x, ch + 1, 6);
        x[6] = 0;
        return 0;
5.
#ifndef PUNKT_H_INCLUDED
#define PUNKT_H_INCLUDED
int p1(char *a, const char *b);
int p2(char *b, const char *n, const char *q);
#endif // PUNKT_H_INCLUDEDЗавдання-
1.Реалізувати вказану у Вашому варіанті функцію.
2. В функції main() використати цю функцію при обчисленні вказаного у Вашому варіанті виразу.
3. Функція має бути визначеною після функції main().
Поясніть що роблять ці строки-
1.
strncpy(s1+n,s2,len2)і що таке strncpy
2.
#ifndef DELINS_H_INCLUDED
#define DELINS_H_INCLUDED
#endif //DELINS_H_INCLUDED3.
 strins(m,q,0);що це робить?
Дякую

