c语言指针函数相关问题

#include <stdio.h>
#include <string.h>
char f(char c)
{   return c>='0'&&c<='9'?'$':c;  }
int main()
{   char s[81]="this   is   2020-4-1",*p=s;
    while(*p!='\0')
    { *p=f(*p);
        if(p==' '&&(p+1)==' ')
            strcpy(p,p+1);
        else
           p++;  
    }
    puts(s);
}
想问一下那个if语句后面是什么意思 整个程序怎么看呢 编译器出不了答案 还有strcpy后面是什么意思

if(p==' '&&(p+1)==' ')
strcpy(p,p+1);
连续2个空格,则把第二个空格之后的字符往前移1位。