C语言字符串匹配算法:查找子串位置

本文介绍一个简单的C语言程序,实现了一个名为'findC'的函数,用于查找一个字符串在另一个字符串中的位置。

代码实现

#include <stdio.h>
#include <string.h>

char *findC(const char *source, const char *obj) // 定义函数findC,用于查找字符串obj在字符串source中的位置
{

    int Length_source = strlen(source); // 获取source的长度
    int Length_obj = strlen(obj);     // 获取obj的长度

    if (strncmp(source, obj, Length_obj) == 0) // 使用strncmp比较source和obj的前Length_obj个字符
        return (char *)source;                 // 如果相同,则返回source的地址到匹配位置

    if (Length_source < Length_obj) // 如果source的长度小于obj,则不存在匹配项
        return NULL;                // 返回一个空指针

    return findC(source + 1, obj); // 将source指针向后移动一个字符,尝试在下一个位置进行匹配
}

int main()
{
    const char *source = 'ABCDEF';   // 定义源字符串
    const char *source1 = 'ABCAFC';  // 定义另一个源字符串
    const char *obj1 = 'C';          // 定义要搜索的目标字符串
    const char *obj2 = 'Z';          // 定义其他要搜索的目标字符串
    const char *obj3 = 'CD';
    const char *obj4 = 'CF';
    const char *obj5 = 'A';

    char *result1 = findC(source, obj1); // 在source中查找obj1
    if (result1)
        printf('result1: %c\n', *result1); // 如果找到匹配项,则打印匹配结果
    else
        printf('result1: NULL\n'); // 如果未找到匹配项,则打印NULL

    char *result2 = findC(source, obj2); // 在source中查找obj2
    if (result2)
        printf('result2: %c\n', *result2); // 如果找到匹配项,则打印匹配结果
    else
        printf('result2: NULL\n');

    char *result3 = findC(source, obj3); // 在source中查找obj3
    if (result3)
        printf('result3: %c\n', *result3);
    else
        printf('result3: NULL\n');

    char *result4 = findC(source, obj4); // 在source中查找obj4
    if (result4)
        printf('result4: %c\n', *result4);
    else
        printf('result4: NULL\n');

    char *result5 = findC(source1, obj5); // 在source2中查找obj5
    if (result5)
        printf('result5: %c\n', *result5);
    else
        printf('result5: NULL\n');

    return 0;
}

代码说明

  • findC 函数使用递归的方式在源字符串 source 中查找目标字符串 obj 的位置。
  • 首先,函数获取 sourceobj 的长度。
  • 然后,使用 strncmp 函数比较 sourceobj 的前 Length_obj 个字符。
  • 如果相同,则说明找到了匹配项,返回 source 的地址。
  • 如果 source 的长度小于 obj 的长度,则说明不存在匹配项,返回 NULL
  • 否则,将 source 指针向后移动一个字符,递归调用 findC 函数,继续查找。

测试用例

main 函数中,我们定义了两个源字符串 sourcesource1,以及五个目标字符串 obj1obj5

然后,我们调用 findC 函数在源字符串中查找目标字符串,并将结果打印到控制台。

总结

本文介绍了一个简单的C语言字符串匹配算法,并提供了详细的代码示例和测试用例。该算法简单易懂,适合初学者学习和使用。

C语言字符串匹配算法:查找子串位置

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

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