C 语言增强 strstr 函数实现模糊匹配

本文介绍了 C 语言中如何实现一个增强版的 strstr 函数,该函数支持模糊匹配,允许在搜索字符串中使用可选段进行匹配。可选段使用'[]'标识,表示该位置可以匹配任何一个可选字符。例如,'a[bc]' 可以匹配 'ab' 和 'ac'。该函数与 strstr 函数一样,返回匹配字符串在源字符串中首次出现的位置。

代码实现

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

int enhanced_strstr(const char *haystack, const char *needle) {
    int haystack_len = strlen(haystack);
    int needle_len = strlen(needle);
    
    for (int i = 0; i <= haystack_len - needle_len; i++) {
        int matched = 1;
        
        for (int j = 0; j < needle_len; j++) {
            if (needle[j] == '[') {
                int optional_matched = 0;
                j++;
                while (needle[j] != ']') {
                    if (needle[j] == haystack[i + j]) {
                        optional_matched = 1;
                        break;
                    }
                    j++;
                }
                if (!optional_matched) {
                    matched = 0;
                    break;
                }
            } else if (haystack[i + j] != needle[j]) {
                matched = 0;
                break;
            }
        }
        
        if (matched) {
            return i;
        }
    }
    
    return -1;
}

int main() {
    char haystack[100];
    char needle[100];
    
    printf("Enter the haystack: ");
    scanf("%s", haystack);
    printf("Enter the needle: ");
    scanf("%s", needle);
    
    int result = enhanced_strstr(haystack, needle);
    
    if (result == -1) {
        printf("Needle not found in haystack.
");
    } else {
        printf("Needle found at index %d.
", result);
    }
    
    return 0;
}

代码说明

该代码实现了以下功能:

  • 循环遍历 haystack 字符串,每次从 haystack 中截取一个长度为 needle_len 的子字符串进行匹配。
  • 循环遍历 needle 字符串,如果遇到 ']',则进入可选段匹配模式。
  • 在可选段匹配模式中,循环遍历可选段字符,如果 haystack 中当前位置的字符与可选段中的某个字符匹配,则匹配成功。
  • 如果 haystack 中当前位置的字符与 needle 中对应位置的字符不匹配,则匹配失败,跳出循环。
  • 如果所有字符都匹配成功,则返回匹配字符串在 haystack 中首次出现的位置。

注意事项

  • 该代码假设可选段中只会出现一个字符,而且可选段只能出现在 needle 字符串的末尾。
  • 如果需要支持多个字符的可选字段,或者可选字段出现在 needle 字符串的其他位置,需要对代码进行相应的修改。

应用场景

该增强版 strstr 函数可以应用于以下场景:

  • 模糊匹配搜索:在数据库查询或文件搜索中,使用该函数可以实现模糊匹配,提高搜索效率。
  • 密码验证:在密码验证中,可以使用该函数来验证用户输入的密码是否与预设的密码匹配。
  • 字符串匹配游戏:在一些字符串匹配游戏中,可以使用该函数来判断用户输入的字符串是否与目标字符串匹配。

总结

本文介绍了 C 语言中如何实现一个增强版的 strstr 函数,该函数支持模糊匹配,可以应用于多种场景。读者可以通过学习该函数的实现原理,掌握更灵活的字符串匹配方法。

C 语言增强 strstr 函数实现模糊匹配

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

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