C语言字符串基础问题,

输入字符串(包含多个‘’)删除其中除前导和尾部以外的‘’。
看图片,这个提问方式搞得我有点麻

img

#include <stdio.h>

int main()
{
    char str[1000];
    char new_str[1000];
    scanf("%s", str);
    const char *p = str;
    char *r = new_str;
    int front = 1;
    while (*p)
    {
        if (*p == '*')
        {
            if (front)
            {
                // copy front *'s
                while (*p && *p == '*')
                    *r++ = *p++;
            }
            else
            {
                const char *q = p;
                while (*q && *q == '*')
                    q++;
                // copy back *'s
                if (*q == '\0')
                    while (*p)
                        *r++ = *p++;
                else
                    p = q;
            }
        }
        else
        {
            front = 0;
            // copy letters
            while (*p && *p != '*')
                *r++ = *p++;
        }
    }
    *r = '\0';
    printf("%s\n", new_str);
    return 0;
}