21xrx.com
2024-12-22 22:56:13 Sunday
登录
文章检索 我的文章 写文章
不使用C/C++字符串库函数,编写strstr函数
2023-07-02 00:42:48 深夜i     --     --
strstr函数 C/C++字符串库函数 编写 字符串 库函数

strstr函数是一个常见的操作字符串的函数,它用于在一个字符串中寻找另一个子字符串的位置。虽然C/C++字符串库已经提供了该函数,但是我们也可以通过自己编写代码来实现它。

在不使用C/C++字符串库函数的情况下,我们需要先确定两个字符串,一个是主串,另一个是要查找的子串。然后,我们需要将两个字符串都转换成字符数组,并使用循环来遍历主串中的每一个字符。

在遍历的过程中,我们逐个比较主串中的字符和子串中的字符是否相等。如果发现某个字符不相等,那么我们就需要从主串的下一个字符继续比较,直到找到子串为止。

最后,一旦找到了子串,我们就需要返回子串在主串中的位置。如果遍历完整个字符串仍然没有找到子串,则说明子串不存在于主串中,我们就可以返回一个空指针或者-1来表示没有找到。

下面是一个示例代码实现strstr函数的具体过程:


char* my_strstr(const char* haystack, const char* needle) {

  int len1 = strlen(haystack);

  int len2 = strlen(needle);

  int i, j;

  

  for (i = 0; i <= len1 - len2; i++) {

    for (j = 0; j < len2; j++) {

      if (haystack[i + j] != needle[j])

        break;

      

    }

    if (j == len2) {

      return (char*)haystack + i;

    }

  }

  return NULL;

}

在这段代码中,我们先通过strlen函数来获取两个字符串的长度,然后使用双重循环来遍历主串和子串,并逐个比较它们的字符。如果在某个位置上字符不相等,我们就会跳出内层循环,从下一个位置重新开始。

如果内层循环正常结束,那么我们就说明找到了子串,于是就返回子串在主串中的起始位置。如果最后没有找到子串,那么我们就会返回一个空指针。

总的来说,自己编写strstr函数虽然会花费更多的时间和精力,但是也可以帮助我们更好地理解字符串操作的原理和实现方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复