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;
}```

浙公网安备 33010602011771号