strstr不能处理包含0的数据流

来源:互联网 发布:森汉机器人编程软件 编辑:程序博客网 时间:2024/06/06 09:08

估计strstr内部使用了strlen来计算长度, 简单改进了下, 还有很多改进空间, 比如已经比较过的字符需要记录是否参与下一轮对比...

static char *mystrstr(char *pOri, int OriNum, char *pFind, int FindNum){  char *p = NULL;  if(OriNum < FindNum)    return NULL;  else  {    int i = 0, j = 0, Match = 0;    for(i = 0; i < OriNum && FindNum + i + 1 <= OriNum; i++)    {      int e = i;      for(j = 0; j < FindNum; j++)      {        if(!memcmp(pFind + j, pOri + e, 1))        {          e++;          Match++;        }        else          Match = 0;      }      if(Match == FindNum)      {        p = pOri + i;        break;      }    }  }  return p;}