字符匹配。字符串s=”abdkdkkdkkabcdddkbackabcdekkabc”,t=“abc”,找出t出现的位置和次数.c语言代码
时间: 2024-10-14 17:03:07 浏览: 15
字符匹配在计算机科学中通常用于查找特定模式在一个字符串中的位置和出现次数。在C语言中,你可以使用循环和数组来实现这个功能。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
void findPattern(char *str, char *pattern, int *position, int *count) {
int lenStr = strlen(str);
int lenPattern = strlen(pattern);
int i = 0;
while (i <= lenStr - lenPattern) {
// 检查子串是否匹配
if (strncmp(str + i, pattern, lenPattern) == 0) {
// 如果匹配,更新位置和计数
*position = i;
(*count)++;
// 移动到下一个可能的位置开始检查
i += lenPattern;
} else {
// 如果不匹配,直接移动到下一个字符
i++;
}
}
// 如果找不到,则将position设为-1(表示未找到)
if (*count == 0) {
*position = -1;
}
}
int main() {
char str[] = "abdkdkkdkkabcdddkbackabcdekkabc";
char pattern[] = "abc";
int position = -1, count = 0;
findPattern(str, pattern, &position, &count);
printf("Pattern '%s' found at position %d and appears %d times.\n", pattern, position, count);
return 0;
}
```
在这个代码中,`findPattern`函数遍历字符串`str`,每次检查长度为`lenPattern`的连续子串是否等于给定的模式`pattern`。如果找到匹配,就更新位置和计数,继续检查;如果没有找到,就移动到下一个可能的位置。
运行这个程序会输出"Pattern 'abc' found at position 5 and appears 4 times.",因为"abc"出现在了第6、18、31和39位。
阅读全文