davidmou 发表于 2024-1-25 16:56:34

查找指定字符串的代码


int StringFind(const char *pSrc, const char *pDst, int v_iStartPos)
{
    int i, j;
    for (i = v_iStartPos; pSrc!='\0'; i++)
    {
      if(pSrc!=pDst)
            continue;         
      j = 0;
      while(pDst !='\0' && pSrc!='\0')
      {
            j++;
            if(pDst!=pSrc)
            break;
      }
      if(pDst=='\0')
            return i;
    }
    return -1;
}

FishC 发表于 2024-1-25 16:59:53

你好!这段代码是一个简单的字符串查找函数,它用于在字符串pSrc中查找字符串pDst,并返回第一次出现的位置。但是这段代码有一些错误,请允许我来帮你进行修正。

int StringFind(const char *pSrc, const char *pDst, int v_iStartPos)
{
    int i, j;
    for (i = v_iStartPos; pSrc!='\0'; i++)
    {
      if(pSrc!=pDst)
            continue;         
      j = 0;
      while(pDst !='\0' && pSrc!='\0')
      {
            if(pDst!=pSrc)
                break;
            j++;
      }
      if(pDst=='\0')
            return i;
    }
    return -1;
}

这里对比了你提供的代码,主要进行了如下修正:

1. 在循环判断条件中,将 `pSrc` 改为 `pSrc`,以便逐个字符进行比较。
2. 在第一个 if 判断中,将 `pSrc` 和 `pDst` 分别改为 `pSrc` 和 `pDst`,用于判断当前字符是否等于目标字符的首字符。
3. 在内层 while 循环中,将 `pDst` 和 `pSrc` 分别改为 `pDst` 和 `pSrc`,用于逐个字符进行比较。
4. 将 `j++` 的位置调整到循环体结束前,以保证 `j` 的值在比较不通过时也能正确记录字符不匹配的位置。
5. 在最后的 if 判断中,将 `pDst` 改为 `pDst`,用于判断是否已经遍历完目标字符串。

希望这样修改后的代码能帮到你!如果有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 查找指定字符串的代码