c++写双层循环的原则

1 循环结束的条件 一定是 用不等号 最好不要用等号 条件里面表示的是循环执行的条件
多层循环要一直 都用不等号 这样可以减少不必要的
外层循环的num变量触发的条件是str移动
比如下面 str 指向'\0'的 字母是 就是循环执行的条件

记得 双引号 表示字符串 单引号 需要 保留其特殊的意义 \0 需要 单引号表示

    int num=0;
    while (*str!="\0")
    {
        /* code */
        //如果str指向 和 subr指向不相等说明num需要增加str需要往前移动
        if (/* condition */*str!=*substr)
        {
            /* code */ //不相等
            str++;
            num++;
            //不相等就结束本次循环
            continue;
        }
        //进入相等说明开始新的匹配循环
        char * tempstr=str;
        char * tempsubstr= substr;
        while (/* condition 循环执行的条件是tempsubstr不能等于"\0"" */*tempsubstr!="\0")
        {
            /* code */
            if (/* condition一层循环指针的值和二层循环内部的值不相等 */*tempstr!=*tempsubstr)
            {
                /* code */
                // num++;
                str++;
                break;
            }
            //二层循环相等
            tempstr++;
            tempsubstr++;
            
        }

        //说明匹配到了 一个内层循环结束
        return num;
    }
    //说明没有匹配到
    return 0;
    

}
int main(int argc, char const *argv[])
{
    // char *p =NULL;
    // getSpace(&p);
    // struct Person p = {'a',12,"hello",23};
    // printf("%d\n",offsetof(struct Person,c));

    // printf("%d\n",*(int *)((char *)&p+72));
    char * str="hellodnf";
    char * substr="dnf";
    int num=test11(str,substr);
    printf("出现dnf的位置索引是%d\n",num);
    system("pause");
    return 0;
}```
posted @ 2024-03-28 15:31  昆仑葫芦  阅读(6)  评论(0)    收藏  举报