我的实现版本:
//在字节序列(bytes)中,查找子字节序列(subbytes),返回当前指向的位置 BYTE* bytesBytes(BYTE* bytes, BYTE* subbytes, int num, int subnum) { BYTE* p1=bytes;//遍历bytes数组的指针 BYTE* p11=bytes;//用于与子数组的比较 BYTE* p2=subbytes;//遍历subbytes子数组的指针 int num1=0; int subnum1=0; while(num1<num) { p11=p1; p2=subbytes; subnum1=0; while(*p11++==*p2++)//注意此处是==,不是赋值=) subnum1++; if (subnum1==subnum)//判断是否找到子数组,即到达p2指针末尾 { return p1; break; } p1++; num1++; } return NULL; } //在字符串(bytes)中,查找子字符串(subbytes),返回当前指向的位置 char* strstr3(char* bytes, char* subbytes) { if (bytes==NULL || subbytes==NULL) { return NULL; } char* p1=bytes;//遍历bytes数组的指针 char* p11=bytes;//用于与子数组的比较 char* p2=subbytes;//遍历subbytes子数组的指针 while(*p1!='\0') { p11=p1; p2=subbytes; while (*p11++==*p2++);//注意此处是==,不是赋值= if (*p2=='\0')//到末尾 { return p1; //break; } p1++; } return NULL; }