#C语言
现在输入一段字符想选择中间的某一段和另外一段字符进行对比 eg:"minksjdakmin" 和 "min"进行对比,第二段字符不变第一段字符和第二段字符对比,并且能找出第一段代码中有多少第二个字符。希望大家能给些帮忙和提示。
字符串比较可以滑动比较,这是一种比较成型的算法
简单的话就是对第一个字符串遍历的和第二个比较
我去找一下我说的滑动比较
#include <stdio.h>
#include <string.h>
int substring(char *str, char *str1); //函数原型
int main(void)
{
char str[64] = {0};
char str1[16] = {0};
int i, j, x;
printf("please put the string\n");
gets(str); //输入的原字符串
puts(str);
printf("\n");
printf("please put the string1 \n");
gets(str1); //输入的字符串中的子串
puts(str1);
printf("\n");
i = strlen(str); //原字符串长度
j = strlen(str1); //子串长度
printf("the string lenth is %d\n", i);
printf("the string lenth is %d\n", j);
x = substring(str, str1);
printf("then anwser is %d\n", x);
return 0;
}
int substring(char *str, char *str1)
{
int x = 0;
char *p; //任意附个初始值
do
{
p = strstr(str, str1); //1.p指针指向strstr的返回值。3.再一次循环到 这里函数的参数发生变化,p重新指向strstr返回值,如此循环。
if (p != NULL)
{
str = p + 1; //2.str同样指向strstr返回值p的下一个地址。
x = x + 1;
}
} while (p != NULL);
return x;
}
通过字符数组的下标获取子串,使用strcmp方法比较字符串。