C语言字符串查找函数实现及测试用例

本文介绍了使用C语言实现字符串查找函数的功能,并提供了多个测试用例,涵盖了各种查找场景,包括子串在字符串开头、中间、结尾以及不存在的情况。

int find(char* str, char* sub) {
  if (str == NULL || sub == NULL || *sub == '\0') {
    return -1;
  }
  int i = 0;
  int j = 0;
  while (str[i] != '\0') {
    if (str[i] == sub[j]) {
      j++;
      if (sub[j] == '\0') {
        return i - j + 1;
      }
    } else {
      j = 0;
    }
    i++;
  }
  return -1;
}

测试用例:

  1. str = 'abcdefg', sub = 'cde',返回2
  2. str = 'hello world', sub = 'world',返回6
  3. str = 'abcd', sub = 'efg',返回-1
  4. str = 'abababab', sub = 'ab',返回0
  5. str = 'aaaaaa', sub = 'aa',返回0
  6. str = '', sub = 'abc',返回-1

代码解析:

该代码使用两个指针 ij 分别指向 strsub 的首字符。

  • 首先判断输入字符串和子串是否为空或子串长度为零,如果是则返回 -1。
  • 循环遍历 str 字符串,当 str[i]sub[j] 相等时, j 指针向后移动,同时判断 sub[j] 是否为字符串结尾,如果是则说明匹配成功,返回子串在 str 中的位置。
  • 如果 str[i]sub[j] 不相等,则将 j 指针重置为 0,继续遍历 str 字符串。
  • 如果循环结束仍未找到匹配的子串,则返回 -1。

总结:

本文介绍了如何使用 C 语言实现字符串查找函数,并提供了多个测试用例,方便读者理解代码逻辑。该代码简洁易懂,可以作为学习字符串操作的参考。

C语言字符串查找函数实现及测试用例

原文地址: https://www.cveoy.top/t/topic/n93G 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录