C语言实现字符串匹配算法:输出比较字符与匹配序号及边界处理优化
```c #include <stdio.h> #include <string.h> // 匹配函数 int match(char *s, char *t, int pos) { int i = pos; // 主串指针 int j = 0; // 模式串指针 while (s[i] && t[j]) { // 当主串和模式串都未结束 if (s[i] == t[j]) { // 若当前字符相等 printf("%c ", s[i]); // 输出当前比较的主串字符 i++; j++; } else { // 不相等 printf("%c ", s[i]); // 输出当前比较的主串字符 i = i - j + 1; // 主串指针回溯 j = 0; // 模式串指针归零 } } if (!t[j]) { // 模式串结束,匹配成功 return i - j + 1; // 返回匹配的序号(从 1 开始计数) } else { // 模式串未结束,匹配失败 return 0; } } int main() { char s[] = "hello world"; char t[] = "world"; int pos = 0; int result = match(s, t, pos); if (result) { printf("匹配成功,序号为:%d\n", result); } else { printf("匹配失败\n"); } return 0; } ``` 额外注意点: 1. 边界情况的处理,比如主串或模式串为空的情况。 2. 对于字符的比较,要考虑大小写等特殊情况。 3. 代码的效率和优化,比如减少不必要的重复计算。 ######[AI写代码神器 | 415点数解答 | 2024-12-15 12:43:20]
- C++实现读取数字并输出最小值的代码及解释(字节豆包 | 113点数解答 | 2026-03-20 19:32:56)28
- C++ 求解:最少操作次数让字符串无子串 “friend” (字节豆包 | 153点数解答 | 2024-08-17 16:29:54)499
- C++ 求解:最少操作次数让字符串不再含 “friend” 子串!(讯飞星火 | 260点数解答 | 2024-08-17 16:30:49)483
- Python 巧解:最少操作次数让字符串告别“friend”子串(字节豆包 | 139点数解答 | 2024-08-18 13:04:14)426
- 3414 数字游戏:Python 求解 8 位 01 字符串中 1 的个数 (字节豆包 | 106点数解答 | 2024-10-27 14:23:27)446
- 巧用字符添加,计算字符串中“our”最大数量及开发注意要点(DeepSeek | 376点数解答 | 2025-10-30 19:20:06)96
- C 语言实现:处理字符串生成最多 “our” 串,附代码及关键开发注意点 (DeepSeek | 257点数解答 | 2025-10-30 19:20:36)130
- C++实现奇数阶矩阵中间行特殊字符输出(DeepSeek | 261点数解答 | 2026-02-28 10:55:53)36
- Octave实验:华氏温度与蟋蟀鸣叫次数的线性及二次多项式拟合与误差分析(DeepSeek | 1030点数解答 | 2025-04-06 09:01:47)292
- 7 - 8菜单计价程序-2:Java实现点菜计价与订单管理,附详细代码及注意事项(DeepSeek | 1256点数解答 | 2025-10-17 17:32:14)142
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)380
- C++实现n×n图案输出:中间行'#'其余'*',开发需注意三点!(字节豆包 | 265点数解答 | 2026-01-16 19:06:25)67