可以帮我解释一下这些语句的作用嘛


#include<stdio.h>
#include<string.h>
int main()
{
char str[512]="8686542101000";
char substr[]="42101";
char *p=str,*q=substr;
int flag=0;
for(;*(p+strlen(substr)-1);p++)
{printf("%d\n",*(p+strlen(substr)-1));
for(q=substr;*p==*q&&*q;p++,q++);
if(!*q)
{
flag=1;
break;
}
}
if(flag==1) puts("accord");
else puts("not accord");
}
for( ; *(p+strlen(substr)-1);  p++) {
    printf("%d\n", *(p + strlen(substr) - 1));
    for (q = substr; *p == *q && *q; p++, q++);
    if(!*q)
    {
        flag = 1;
        break;
    }
}

这个for循环是判断如果

*(p+strlen(substr)-1)

这个指针为真,那么先输出这个东西,然后再进行一个for循环,里面进行一个for循环,里面有一个if判断,判断如果*q不为真,那么flag = 1,然后输出


char str[512]="8686542101000";
char substr[]="42101";

这两句是定义数组,往里存值


char *p=str,*q=substr;
int flag=0;

第一句是定义了两个指针,第二句是定义了一个变量

最后那个if就不说了,顺便说一下,你的码风可以改一改,O(∩_∩)O哈哈~,可以看看我的博客