这一道例题怎么都理解不明白啊 希望有懂的老人讲解一下


#include <stdio.h>
char *a ="you";
char b[]="welcome you to chaina!";
int main()
{int i,j=0;char * p;
for (i=0;b[i]!='\0';i++)
{
    if(*a==b[i])
    {
        p=a;
        for(j=i;*p!='\0';j++)
        {
            if (*p!=b[j]) break;
            p++;
        }
    if (*p == '\0')break;
    }
}
printf ("%s",&b[i]);
}

就是说


#include <stdio.h>
char *a = "you";
char b[] = "welcome you to chaina!";
int main()
{
    int i, j = 0;
    char *p;
    for (i = 0; b[i] != '\0'; i++)
    {
        if (*a == b[i])//a的第一个字符在b中被找到
        {
            p = a;
            for (j = i; *p != '\0'; j++)
            {
                if (*p != b[j])//如果a内的字符和b对应位置的字符不对应
                    break;//break
                p++;//p自增
            }
            if (*p == '\0')//如果扫描到结尾,说明匹配成功
                break;
        }
    }
    printf("%s", &b[i]);//此时的b[i]为b中第一处字符串a出现的首地址
}

在b中搜索a串,找到后输出b串中从找到位置开始的后续字符串

就是在b字符串中查找a字符串所在的位置,从a字符串所在的位置开始输出,