这个问题麻烦看下
程序代码:
char * pr(char * s1,char * s2) // s1,s2 接受两个字符串数组 { int m1,m2,i,n; char * ptr; m1 = strlen(s1); m2 = strlen(s2); for(i = 0,n = 0;i < m1;i++,n++) { if(s1[i] == s2[0]) // 当s1有一个字符和s2[0]相等就进入内循环且只进入一次 { for(ptr = &s1[i],i = 1;;i++) // 内循环 后面连续的字符相等 i自加 { if(s1[n + 1] != s2[i]) // 当出现不相等就退出循环 break; } break; } } return i == m2 ? ptr : NULL; // 这边判断i(就是相等的字符)是否和s2 长度相等 相等就说明s1中有s2 }
我的问题就是为什么每次s2是个字符数大于2的字符串时 这个程序都返回的NULL(s2小于等于2的情况程序能按照期望运行)
我用printf看 i每次最大只能自加到2 这是什么情况?